我正在尝试在我的客户端上的Wordpress上的woocommerce结帐页面上创建一个选择框,询问客户在哪里听说过该网站。我已经创建了它,现在我想在选择“其他”时弹出一个文本框。到目前为止,它还没有发生。
这是我下载的代码和目前的文本框:
/**
* Add how did you hear about us field to the checkout
**/
add_action('woocommerce_after_order_notes', 'how_did_you_hear');
function how_did_you_hear( $checkout ) {
echo '<div id="how_did_you_hear">';
woocommerce_form_field( 'hear_about_us', array(
'type' => 'select',
'class' => array('how_did_you_hear_about_us form-row-wide'),
'label' => __('How did you hear about us?'),
'required' => true,
'onChange' =>'howdidOnchange();',
'options' => array(
'' => __('-- Choose an option --', 'woocommerce'),
'Google' => __('Google', 'woocommerce'),
'Facebook' => __('Facebook', 'woocommerce'),
'Twitter' => __('Twitter', 'woocommerce'),
'Mother & Baby Magazine' => __('Mother & Baby Magazine', 'woocommerce'),
'eBay' => __('eBay', 'woocommerce'),
'Count the Kicks' => __('Count the Kicks', 'woocommerce'),
'Other (please specify)' => __('Other (please specify)', 'woocommerce'))
), $checkout->get_value( 'hear_about_us' ));
echo '</div>';
}
/**
* Process the checkout
**/
add_action('woocommerce_checkout_process', 'how_did_you_hear_process');
function how_did_you_hear_process() {
global $woocommerce;
}
/**
* Update the order meta with field value
**/
add_action('woocommerce_checkout_update_order_meta', 'how_did_you_hear_update_order_meta');
function how_did_you_hear_update_order_meta( $order_id ) {
if ($_POST['hear_about_us']) update_post_meta( $order_id, 'How did you hear about us?', esc_attr($_POST['hear_about_us']));
}
//Add text box if other is selected
if ($_POST['hear_about_us'] == 'Other (please specify)') {
add_action('woocommerce_after_order_notes', 'how_did_other');
function how_did_other( $checkout ) {
echo '<div id="how_did_other">';
woocommerce_form_field( 'other_please_specify', array(
'type' => 'text',
'class' => array('other-please-specify form-row-wide'),
'label' => __('Other (please specify)'),
'placeholder' => __('Enter something'),
), $checkout->get_value( 'other_please_specify' ));
echo '</div>';
}
/**
* Process the checkout
**/
add_action('woocommerce_checkout_process', 'how_did_other_process');
function how_did_other_process() {
global $woocommerce;
}
/**
* Update the order meta with field value
**/
add_action('woocommerce_checkout_update_order_meta', 'how_did_other_update_order_meta');
function how_did_other_update_order_meta( $order_id ) {
if ($_POST['other_please_specify']) update_post_meta( $order_id, 'Other (please specify)', esc_attr($_POST['other_please_specify']));
}
}
当它不是woocommerce时,我已经阅读了几种方法来做到这一点,但我也无法做到这一点,所以这似乎是最好的方法 - 尽管我可能是错的。
我还注意到,在网站上的代码中,当选择占位符时,它显示为<option value selected="selected">
但是当我选择其他选项时,它仍然只显示在占位符上,所以我不知道不知道这是否与问题有关。
答案 0 :(得分:0)
$_POST['hear_about_us']
,并且在加载结帐页面时会运行woocommerce_after_order_notes
挂钩。因此,您在已经运行之后将how_did_other
添加到挂钩中。
最简单的方法是最初包含另一个文本框但隐藏style="display:none;"
,并用javascript显示
var selectInput = $('.how_did_you_hear_about_us');
var otherInput = $('.other-please-specify');
selectInput.change(function() {
if(selectInput.val()==='Other (please specify)') {
otherInput.show();
} else {
otherInput.hide();
}
});