我创建了一个 do_action('after_product_tabs)
Hook ,我希望以编程方式回显特定产品类别下的图像,但我遇到了一个错误。我能够回显 div
作为操作 Hook 的测试,但我的条件逻辑被破坏了。任何帮助将非常感激:
这是函数:
function after_product_tabs() {
do_action('after_product_tabs'); //creates the action hook
};
function display_prewired_image() {
echo '<div class="test" style="clear: both;">'.$home_url.'</div>'; // This prints!
if( has_term( 'strat_pickups', 'product_cat' ) ) {
echo' <p>DEBUG ME</p>'; // This breaks
}
}
add_action('after_product_tabs', 'display_prewired_image');
我也尝试过:
1.) 传入全局变量:
function display_prewired_image() {
global $product;
$prod_id = $product->get_id();
if( has_term( 'strat_pickups', 'product_cat', $prod_id ) ) {
echo' <p>DEBUG ME</p>';
}
}
2.) 将条件逻辑从产品类别更改为 is_single()
,这有效,所以我知道我的问题出在 strat_pickups
的逻辑范围内:
function display_prewired_image() {
global $product;
if ( is_a( $product, 'WC_Product' ) ) {
// Get product ID
$prod_id = $product->get_id();
if( is_single('354') ) {
echo '<h1 style="red!important; clear: both;">DEBUG ME</h1>';
}
} else {
echo 'No product found!';
}
}
add_action( 'after_product_tabs', 'display_prewired_image' );
有关更多信息,我正在 Woocommerce 中自定义 tabs.php 模板。那将无法访问 $product 变量吗?
最佳答案
试试这个,全局 $product
丢失
function display_prewired_image() {
global $product;
if ( is_a( $product, 'WC_Product' ) ) {
// Get product ID
$prod_id = $product->get_id();
if ( has_term( 'strat_pickups', 'product_cat', $prod_id ) ) {
echo 'DEBUG ME';
} else {
echo 'Category not found!';
}
} else {
echo 'No product found!';
}
}
//add_action( 'after_product_tabs', 'display_prewired_image' );
add_action( 'woocommerce_before_add_to_cart_form', 'display_prewired_image' );
add_action( 'woocommerce_after_single_product', 'display_prewired_image' );
关于php - 如何检查 WooCommerce 产品是否属于特定类别并在特定 Hook 处回显图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63900301/