php - 如何检查 WooCommerce 产品是否属于特定类别并在特定挂钩处回显图像?
问题描述
我创建了一个do_action('after_product_tabs)
钩子,希望以编程方式在特定产品类别下回显图像,但我遇到了一个错误。我可以呼出 adiv
作为对动作钩子的测试,但我的条件逻辑被打破了。任何帮助将不胜感激:
这是功能:
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' );
推荐阅读
- java - 如何从 java 中检索 Swagger 定义
- visual-c++ - MSVC 调试版本中的 ASIO 调试错误 - 发布版本中没有错误
- java - JAVA上的多线程
- filesystems - POSIX 存储和 NFS 有什么区别?
- excel - Excel VBA - 从不正确的工作簿中删除行/列的问题
- reactjs - react context provider在渲染方法中抛出错误
- ios - 嵌套请求的完成块
- ios - 以编程方式在 iOS 中为所有应用程序启用/禁用相机(全局)
- java - 让 Hazelcast Native Client 与 Hibernate 5.2.x 一起工作
- c# - 防止两个组合框选择同一个项目