在WooCommerce单个产品标题下显示自定义字段

时间:2017-06-14 15:21:10

标签: php wordpress woocommerce product hook-woocommerce

我在WooCommerce中遇到自定义字段的问题。

我有产品(书)的tille,我想添加自定义字段的作者。我在主题自定义字段中注册并使用Wordpress custome字段添加新的字段。

自定义字段调用: product_author (即我的)和 mbt_publisher_name (来自主题)

我在主题和woocommerce目录中找到了模板文件 title.php

我试图添加:

<?php echo get_post_meta($id, "product_author", true); ?> 

并没有任何改变...... 来自title.php的原始来源

    <?php
/**
 * Single Product title
 *
 * @author  WooThemes
 * @package WooCommerce/Templates
 * @version 1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

?>

<h2 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h2>

如何在标题下显示该自定义字段?
哪里可以找到那个钩子?

由于

1 个答案:

答案 0 :(得分:4)

如果您查看woocommerce模板content-single-product.php,您会看到此代码(从第54行开始):

/**
 * 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
 * @hooked WC_Structured_Data::generate_product_data() - 60
 */
do_action( 'woocommerce_single_product_summary' );

因此, woocommerce_template_single_title 会隐藏在 woocommerce_single_product_summary 操作挂钩中,优先级为 5 < em>(所以它首先出现)。

您可以通过2种方式完成此操作:

1)您可以使用隐藏在 woocommerce_single_product_summary 钩子中的自定义功能,优先级在 6 9 之间,这样:

add_action( 'woocommerce_single_product_summary', 'custom_action_after_single_product_title', 6 );
function custom_action_after_single_product_title() { 
    global $product; 

    $product_id = $product->get_id(); // The product ID

    // Your custom field "Book author"
    $book_author = get_post_meta($product_id, "product_author", true);

    // Displaying your custom field under the title
    echo '<p class="book-author">' . $book_author . '</p>;
}

代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。

此代码已经过测试,适用于WooCommerce 3.0 +

2)您可以直接修改位于活动主题 single-product/title.php)的WooCommerce文件夹中的 see below the reference about overriding WooCommerce templates through theme < / EM>:

<?php
/**
 * Single Product title
 *
 * @author  WooThemes
 * @package WooCommerce/Templates
 * @version 1.6.4
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly
}

// Calling global WC_Product object
global $product;

$product_id = $product->get_id(); // The product ID

// Your custom field "Book author"
$book_author = get_post_meta($product_id, "product_author", true);

?>

<h2 itemprop="name" class="product_title entry-title"><?php the_title(); ?></h2>

<p class="book-author"><?php echo $book_author; ?></p>

官方参考:Template Structure + Overriding WooCommerce Templates via a Theme

  

我建议您使用第一种方法,因为它使用钩子时更干净,如果更新模板,则无需进行任何更改。你还应该更好地使用儿童主题...