2017-01-25 2 views
1

カスタムチェックアウトフォームを使用するプラグインがあります。このチェックアウトフォームには、デフォルトのWordpressワンと同じ「アカウント作成」チェックボックスがあります。ユーザーがこの新しいアカウントの役割を選択できるようにする別のチェックボックスを追加するコードを記述しようとしています。このチェックアウトフォームを作成するプラグインには、do_actionがあります。それには私が必要とする変数もあります。残念ながら、私はこれをどのように使用するのかは不明です。do_action T_OBJECT_OPERATOR( - >)で変数を渡すPHP

do_action:

do_action('woocommerce_after_checkout_validation', $woocommerce_checkout->posted); 

あなたは、これが$woocommerce_checkout->posted

私のコードは次のよう

add_action('woocommerce_after_checkout_validation', 'validate_professional_field' 10,1); 

を持っており、私の機能では、私は次のコードでこれを使用しようとするを使用して見ることができるように:

function validate_professional_field($woocommerce_checkout->posted) {} 

これはうまくいかず、私はここで何をすべきかわからない。 アクションで送信された変数はどのように使用できますか?

最後に、$woocommerce_checkout->posted['createprofessional']を使用して、自分のチェックボックスの値にする必要がある値を取得します。

その他の詳細

このチェックボックスは、次のコードで行われた。

add_action('woocommerce_before_checkout_registration_form' , 'define_telesales_fields', 3); 

<?php function define_telesales_fields() { ?> 
    <p class="form-row form-row-wide create-professional"> 
     <div class="create-account"> 
     <input class="input-checkbox" id="createprofessional" type="checkbox" name="createprofessional" value="1" /> 
     <label for="createprofessional" class="checkbox"><?php _e('Create a professional', 'woocommerce'); ?></label> 
     </div> 
    </p>   
<?php }?> 

カンマがadd_action

add_action('woocommerce_after_checkout_validation', 'validate_professional_field', 10,1);

に欠けていた

解決

答えて

1

関数宣言のパラメータ名として$woocommerce_checkoutを使用してください。オブジェクト全体を関数に渡す場合は、関数内で$woocommerce_checkout->postedを使用できます。

例えば:あなたが唯一の機能でpostedを使用したい知っていればまた

function validate_professional_field($woocommerce_checkout) { 
    //$woocommerce_checkout->posted is valid here 
} 

//and you'd call it like this: 
validate_professional_field($woocommerce_checkout); 

、あなたが何をしたいかであるように思われ、まさにそれに引数を制限することができます。この場合には、そのような関数宣言でそれを有効な変数名を与える: `add_action(「woocommerce_after_checkout_validation」、「validate_professional_field」10,1);`それが必要:

function validate_professional_field($posted) { 
    //$posted is valid here, and will be contain the data from $woocommerce_checkout->posted that you're passing into the function. 
} 

//and you'd call it like this: 
validate_professional_field($woocommerce_checkout->posted); 
+0

は、私はミスを犯し判明'add_action( 'woocommerce_after_checkout_validation'、 'validate_professional_field'、10,1);'しかし、努力してくれてありがとう。あなたの答えのおかげで、私がしていたことが正しいのか分かりました。私はこれが誰かにとって役に立ちそうだと思うので、質問を削除しないでください。 –