Tom*_*tBe 2 php wordpress product woocommerce hook-woocommerce
我在WooCommerce中的自定义字段有问题。
我有产品(书),我想添加具有自定义字段的作者。我在主题自定义字段中进行了注册,并在Wordpress custome字段中添加了新内容。
自定义字段调用:(product_author这是我的)和mbt_publisher_name(来自主题)
我已经title.php在主题和woocommerce目录中找到了模板文件。
我尝试添加:
<?php echo get_post_meta($id, "product_author", true); ?>
Run Code Online (Sandbox Code Playgroud)
并没有任何变化... 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>
Run Code Online (Sandbox Code Playgroud)
如何在标题下显示该自定义字段?
在哪里可以找到那个钩子?
谢谢
如果您查看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' );
Run Code Online (Sandbox Code Playgroud)
因此woocommerce_template_single_title,钩在woocommerce_single_product_summary动作钩子中的优先级为(因此优先)。5
您可以通过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>;
}
Run Code Online (Sandbox Code Playgroud)
代码在您的活动子主题(或主题)的function.php文件中,或者在任何插件文件中。
此代码已经过测试,可在WooCommerce 3.0+上运行
要么
2)您可以直接编辑single-product/title.php位于活动主题 的WooCommerce文件夹中的模板(请参阅下面的参考,有关通过主题覆盖WooCommerce模板):
<?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>
Run Code Online (Sandbox Code Playgroud)
我建议您使用第一种方法,因为它更干净,因为它使用了一个钩子,并且如果更新模板,则无需进行任何更改。您还应该更好地使用儿童主题…