WooCommerce 自定义字段输出
WooCommerce custom fields output
我已经创建了自定义文本字段,但我无法使用操作挂钩将其输出到单个产品页面上...
如果有人能提供解决方案,我将不胜感激?
我的代码(functions.php):
// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
// Custom fields will be created here...
woocommerce_wp_text_input(
array(
'id' => '_text_field',
'label' => __( 'My Text Field', 'woocommerce' ),
'placeholder' => 'http://',
'desc_tip' => 'true',
'description' => __( 'Enter the custom value here.', 'woocommerce' )
)
);
echo '</div>';
}
function woo_add_custom_general_fields_save( $post_id ){
// Text Field
$woocommerce_text_field = $_POST['_text_field'];
if( !empty( $woocommerce_text_field ) )
update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );
}
add_action( 'woocommerce_single_product_summary', 'output_custom_fields' );
function output_custom_fields() {
echo get_post_meta( $post->ID, '_text_field', true );
}
谢谢!
丹尼斯
正如@MirzaP 在评论中所说,$post
未在函数 output_custom_fields()
中定义。所以$post->ID
不行
使其工作(能够在函数中获取post对象)
function output_custom_fields() {
global $post;
echo get_post_meta( $post->ID, '_text_field', true );
}
不要忘记挂钩操作的第三个参数,它将设置优先级。这些优先级可以在 Woocommerce 模板中找到,根据您要放置元数据的位置使用正确的优先级。
/**
* woocommerce_single_product_summary hook
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
*/
因此,如果您希望在价格之后立即显示自定义数据,则需要将优先级设置为 11 到 19 之间的整数
add_action('woocommerce_single_product_summary', 'output_custom_fields', 15);
我已经创建了自定义文本字段,但我无法使用操作挂钩将其输出到单个产品页面上...
如果有人能提供解决方案,我将不胜感激?
我的代码(functions.php):
// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
// Custom fields will be created here...
woocommerce_wp_text_input(
array(
'id' => '_text_field',
'label' => __( 'My Text Field', 'woocommerce' ),
'placeholder' => 'http://',
'desc_tip' => 'true',
'description' => __( 'Enter the custom value here.', 'woocommerce' )
)
);
echo '</div>';
}
function woo_add_custom_general_fields_save( $post_id ){
// Text Field
$woocommerce_text_field = $_POST['_text_field'];
if( !empty( $woocommerce_text_field ) )
update_post_meta( $post_id, '_text_field', esc_attr( $woocommerce_text_field ) );
}
add_action( 'woocommerce_single_product_summary', 'output_custom_fields' );
function output_custom_fields() {
echo get_post_meta( $post->ID, '_text_field', true );
}
谢谢! 丹尼斯
正如@MirzaP 在评论中所说,$post
未在函数 output_custom_fields()
中定义。所以$post->ID
不行
使其工作(能够在函数中获取post对象)
function output_custom_fields() {
global $post;
echo get_post_meta( $post->ID, '_text_field', true );
}
不要忘记挂钩操作的第三个参数,它将设置优先级。这些优先级可以在 Woocommerce 模板中找到,根据您要放置元数据的位置使用正确的优先级。
/**
* woocommerce_single_product_summary hook
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
*/
因此,如果您希望在价格之后立即显示自定义数据,则需要将优先级设置为 11 到 19 之间的整数
add_action('woocommerce_single_product_summary', 'output_custom_fields', 15);