在单个产品页面上的价格之后添加自定义元字段值

时间:2016-10-04 01:44:14

标签: php wordpress woocommerce product meta-boxes

我创建了一个名为" Info"的自定义Metabox。在我的产品页面上。
我想在产品价格后面的模板 content-single-product.php 中显示相应的元字段值。但它没有输出相应的元字段值,但这不起作用。

screenshot

我的问题是我不知道如何调用相应的元字段值。是在 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');

?>

我做错了什么以及如何让它发挥作用?

感谢。

1 个答案:

答案 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' );
    ?>