使用 WP_Query 显示 WooCommerce 自定义结帐字段
Show WooCommerce custom checkout fields using a WP_Query
我使用插件创建一些自定义 B2B 字段。现在我需要在结帐页面显示这些自定义字段。
function add_custom_b2b_fields_checkout( $fields ){
$args = array(
'post_type' => 'afreg_fields',
'post_status' => 'publish',
'posts_per_page' => '99',
'orderby' => 'name',
);
$get_b2b_fields = new WP_Query( $args );
if ($get_b2b_fields->have_posts()) : while ($get_b2b_fields->have_posts()) : $get_b2b_fields->the_post();
$fields['billing'][$get_b2b_fields->post_name] = array(
'type' => 'text',
'label' => get_the_title(),
'placeholder' => __(" ", "woocommerce"),
'class' => array('b2b-field'),
'required' => false,
);
endwhile;
return $fields;
endif;
}
add_filter( 'woocommerce_checkout_fields', 'add_custom_b2b_fields_checkout' );
代码几乎可以正常工作。但它只显示最后一个字段,就好像 while
运行 正确但 return $fields
只显示第一个自定义字段而不是所有字段。
如何显示所有字段而不是一个字段?我尝试在 $fields
处添加一个 .=
但那没有用。
add_filter( 'woocommerce_checkout_fields', 'add_custom_b2b_fields_checkout' );
改为
add_action( 'woocommerce_checkout_fields', 'add_custom_b2b_fields_checkout' );
并在要显示的页面上添加do_action('woocommerce_checkout_fields');
您的代码中有一个小错误,因为 $get_b2b_fields->post_name
是空的。
只需替换:
$fields['billing'][$get_b2b_fields->post_name] = array(
与:
$fields['billing'][$get_b2b_fields->post->post_name] = array(
现在可以使用了。
我使用插件创建一些自定义 B2B 字段。现在我需要在结帐页面显示这些自定义字段。
function add_custom_b2b_fields_checkout( $fields ){
$args = array(
'post_type' => 'afreg_fields',
'post_status' => 'publish',
'posts_per_page' => '99',
'orderby' => 'name',
);
$get_b2b_fields = new WP_Query( $args );
if ($get_b2b_fields->have_posts()) : while ($get_b2b_fields->have_posts()) : $get_b2b_fields->the_post();
$fields['billing'][$get_b2b_fields->post_name] = array(
'type' => 'text',
'label' => get_the_title(),
'placeholder' => __(" ", "woocommerce"),
'class' => array('b2b-field'),
'required' => false,
);
endwhile;
return $fields;
endif;
}
add_filter( 'woocommerce_checkout_fields', 'add_custom_b2b_fields_checkout' );
代码几乎可以正常工作。但它只显示最后一个字段,就好像 while
运行 正确但 return $fields
只显示第一个自定义字段而不是所有字段。
如何显示所有字段而不是一个字段?我尝试在 $fields
处添加一个 .=
但那没有用。
add_filter( 'woocommerce_checkout_fields', 'add_custom_b2b_fields_checkout' );
改为
add_action( 'woocommerce_checkout_fields', 'add_custom_b2b_fields_checkout' );
并在要显示的页面上添加do_action('woocommerce_checkout_fields');
您的代码中有一个小错误,因为 $get_b2b_fields->post_name
是空的。
只需替换:
$fields['billing'][$get_b2b_fields->post_name] = array(
与:
$fields['billing'][$get_b2b_fields->post->post_name] = array(
现在可以使用了。