我在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>
如何在标题下显示该自定义字段?
哪里可以找到那个钩子?
由于
答案 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
我建议您使用第一种方法,因为它使用钩子时更干净,如果更新模板,则无需进行任何更改。你还应该更好地使用儿童主题...