2017-01-25 5 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 внутри самой функции.

например:

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

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

С другой стороны, если вы знаете, что вы хотите использовать только posted в функции, вы можете ограничить аргумент как раз то, что кажется, что вы хотите сделать. В этом случае, дать ему правильное имя переменной в объявлении функции, например, так:

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);' это должно be: 'add_action ('woocommerce_after_checkout_validation', 'validate_professional_field', 10,1);' Но большое вам спасибо за ваши усилия. Благодаря вашему ответу я знал, что правильно, что я делаю. Не удаляя вопрос, поскольку я думаю, что это может быть полезно кому-то. –

Смежные вопросы