我已使用
在单个产品页面上的简短描述后成功添加了内容if (!function_exists('my_content')) {
function my_content( $content ) {
$content .= '<div class="custom_content">Custom content!</div>';
return $content;
}
}
add_filter('woocommerce_short_description', 'my_content', 10, 2);
我在short-description.php
中看到apply_filters( 'woocommerce_short_description', $post->post_excerpt )
所以我对此很感兴趣。
以同样的方式,我想在添加到购物车按钮后添加内容,因此我找到了do_action( 'woocommerce_before_add_to_cart_button' )
,现在我正在挂钩woocommerce_before_add_to_cart_button
。我正在使用
if (!function_exists('my_content_second')) {
function my_content_second( $content ) {
$content .= '<div class="second_content">Other content here!</div>';
return $content;
}
}
add_action('woocommerce_after_add_to_cart_button', 'my_content_second');
但没有任何反应。我可以只钩住apply_filters
内的钩子吗?从我迄今为止通过使用钩子所理解的是,你只需要一个钩子名称来挂钩即可。第一个是过滤器钩子,所以我使用add_filter
,第二个是动作钩子,所以我应该使用add_action
,所有都应该工作。那么为什么不呢?
答案 0 :(得分:13)
在这里,您需要回显内容,因为它是add_action hook。
add_action( 'woocommerce_after_add_to_cart_button', 'add_content_after_addtocart_button_func' );
/*
* Content below "Add to cart" Button.
*/
function add_content_after_addtocart_button_func() {
// Echo content.
echo '<div class="second_content">Other content here!</div>';
}
答案 1 :(得分:0)
你需要做echo而不是return。
add_action( 'woocommerce_after_add_to_cart_button', 'ybc_after_add_to_cart_btn' );
function ybc_after_add_to_cart_btn(){
//add text OR HTML here
echo '<p>After custom text here</p>';
}
如果您想要同样的东西 on the shop archive page,那么您需要使用 woocommerce_loop_add_to_cart_link
过滤器来修改添加到购物车按钮。