我正在尝试将产品标签从woocommerce_after_single_product_summary移至woocommerce_before_single_product_summary。基本上,我想用一个包含图像库的选项卡替换单个产品上的产品图像,但所有其他选项卡都显示在同一个容器中。我有问题试图让标签周围的容器像图像周围的容器一样,但是让我感到难过的是如何从woocommerce_after_single_product_summary部分删除标签。我可以删除相关产品"没问题,从同一部分来看,但我所做的一切都没有让标签突然出现。
这可以正常删除图像:
remove_action ('woocommerce_before_single_product_summary',
'woocommerce_show_product_images',20);
这适用于在其位置添加标签(除了容器问题):
add_action( 'woocommerce_before_single_product_summary',
'woocommerce_output_product_data_tabs', 20 );
但这似乎永远不会消除标签:
remove_action( 'woocommerce_after_single_product_summary',
'woocommerce_output_product_data_tabs', 10 );
我已经检查过10是正确的数字(我发现它确实有所不同),但这是正确的。我跟踪了add_action woocommerce /包括/ WC-模板hooks.php:
/**
* After Single Products Summary Div.
*
* @see woocommerce_output_product_data_tabs()
* @see woocommerce_upsell_display()
* @see woocommerce_output_related_products()
*/
add_action( 'woocommerce_after_single_product_summary',
'woocommerce_output_product_data_tabs', 10 );
add_action( 'woocommerce_after_single_product_summary',
'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary',
'woocommerce_output_related_products', 20 );
我可以删除相关产品: remove_action(' woocommerce_after_single_product_summary',' woocommerce_output_related_products',20);
我已经尝试过这个建议(在另一个主题中)钩子可能需要一个"模板重定向"但那也没有用。我试过的是:
// Trying template redirect
function esb_product_category_filter_changes()
{remove_action('woocommerce_after_single_product_summary',
'woocommerce_output_product_data_tabs', 10);
}
do_action('template_redirect','esb_product_category_filter_changes');
有什么想法吗?我搜索了所有可能相关的插件,关闭了一堆,但仍然是相同的行为。我可以将标签放在我想要的任何地方,但我无法摆脱它们。
答案 0 :(得分:2)
我在Storefront主题上测试过:
myImageView.setImageBitmap(newBitmap)
并且有效。所以你的问题可能是由于你的主题或一些插件正在对此进行一些自定义。
如何检查:
使用以下钩子函数,您将获得remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
挂钩的原始数据输出(所有回调,包含优先级和参数)。通过这种方式,您将能够看到woocommerce_after_single_product_summary
是否被挂钩,优先级是什么。
此测试功能仅在档案和产品页面中输出管理员的数据:
woocommerce_output_related_products
代码进入活动子主题(或活动主题)的function.php文件。
现在,您可以在add_action( 'woocommerce_before_main_content', function(){
// Only for admin user role
if( ! current_user_can('edit_products')) return;
global $wp_filter;
echo '<pre>';
print_r( $wp_filter['woocommerce_after_single_product_summary'] );
echo '</pre>';
}, 50 );
中设置正确的优先级(并删除此测试代码)。
你也可以尝试以下代码(没有任何保证):
remove_action()
代码进入活动子主题(或活动主题)的function.php文件。