我创建了一个名为" Info"的自定义Metabox。在我的产品页面上。
我想在产品价格后面的模板 content-single-product.php 中显示相应的元字段值。但它没有输出相应的元字段值,但这不起作用。
我的问题是我不知道如何调用相应的元字段值。是在 if
php文件中还是在 function.php
模板中。
这是我用来创建Metabox 的代码(它可以工作):
content-single-product.php
此代码位于我的主题文件夹的function.php文件中:
// Create metabox
<?php
function meta_box1()
{
add_meta_box('new_meta', 'info','new_meta_output','product');
}
add_action ('add_meta_boxes','meta_box1');
function new_meta_output($post)
{
$new_meta = get_post_meta($post->ID,'_new_meta',true);
echo ('<label for="new_meta"> info meta box</label>');
echo ('<input type="text" id="new_meta" name="new_meta" value="'.esc_attr($new_meta).'"/>');
}
function new_meta_save($post_id)
{
$new_meta=sanitize_text_field($_POST['new_meta']);
update_post_meta ($post_id,'_new_meta',$new_meta);
}
add_action('save_post','webtot_new_meta_save');
?>
我做错了什么以及如何让它发挥作用?
感谢。
答案 0 :(得分:2)
<强>更新强>
1)您在上一个功能中未获得产品ID 。为此,您需要使用WordPress
get_the_ID()
,数据值将根据需要输出。
2)您的功能new_meta_save()
与相应的add_action (hook)中的名称不同。
3)您的所有代码都会出现在您的有效主题中的function.php
文件中。
以下是您重新访问的功能代码:
// Creating a custom metabow in Admin Individual product pages
add_action ('add_meta_boxes','add_info_meta_box');
function add_info_meta_box()
{
add_meta_box('new_meta', 'info','info_meta_fields_output','product', 'side');
}
function info_meta_fields_output($post)
{
$new_meta = get_post_meta($post->ID,'_new_meta',true);
echo ('<label for="new_meta"> info meta box</label>');
echo ('<input type="text" id="new_meta" name="new_meta" value="'.esc_attr($new_meta).'"/>');
}
add_action('save_post','save_info_meta_box');
function save_info_meta_box($post_id)
{
$new_meta=sanitize_text_field($_POST['new_meta']);
update_post_meta ($post_id,'_new_meta',$new_meta);
}
// Displaying the value on single product pages
function meta_product($product_id) {
$new_meta2 = get_post_meta(get_the_ID(),'_new_meta', true);
echo $new_meta2;
}
add_action('woocommerce_single_product_summary', 'meta_product',15);
所有代码都在您的活动子主题(或主题或任何插件文件)的function.php文件中。
此代码经过测试并正常运行
要在价格后显示此元字段值,您需要优先级 10
和 20
,(但如果您想显示)在价格之前,在标题之后,优先级将介于 5
和 10
之间。
在 woocommerce_single_product_summary
的相关模板上,您有:
<?php
/**
* woocommerce_single_product_summary hook.
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_rating - 10
* @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
*/
do_action( 'woocommerce_single_product_summary' );
?>