Edw*_*ein 2 php wordpress tabs product woocommerce
我正在尝试将产品标签从 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);
Run Code Online (Sandbox Code Playgroud)
这可以很好地在其位置添加选项卡(容器问题除外):
add_action( 'woocommerce_before_single_product_summary',
'woocommerce_output_product_data_tabs', 20 );
Run Code Online (Sandbox Code Playgroud)
但这似乎永远不会摆脱标签:
remove_action( 'woocommerce_after_single_product_summary',
'woocommerce_output_product_data_tabs', 10 );
Run Code Online (Sandbox Code Playgroud)
我已经检查过 10 是正确的数字(我发现确实有所不同),但它是正确的。我将 add_action 追踪到 woocommerce/includes/wc-template-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 );
Run Code Online (Sandbox Code Playgroud)
我可以删除相关产品: 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');
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我已经搜索了所有可能相关的插件,关闭了一堆,但仍然是相同的行为。我可以将标签放在任何我想要的地方,但我无法摆脱它们。
我已经在 Storefront 主题上进行了测试:
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
Run Code Online (Sandbox Code Playgroud)
它有效。因此,您的问题可能是由于您的主题或某些插件对此进行了一些自定义。
如何检查:
使用以下挂钩函数,您将获得woocommerce_after_single_product_summary挂钩的原始数据输出(所有回调,具有优先级和参数)。通过这种方式,您将能够看到是否woocommerce_output_related_products被吸引以及优先级是什么。
此测试功能将仅在档案和产品页面中为管理员输出数据:
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 );
Run Code Online (Sandbox Code Playgroud)
代码位于活动子主题(或活动主题)的 function.php 文件中。
现在您可以获得正确的优先级设置remove_action() (并删除此测试代码)。
您也可以尝试以下代码(没有任何保证):
add_action( 'woocommerce_after_single_product_summary', 'removing_product_tabs', 2 );
function removing_product_tabs(){
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
}
Run Code Online (Sandbox Code Playgroud)
代码位于活动子主题(或活动主题)的 function.php 文件中。
| 归档时间: |
|
| 查看次数: |
3600 次 |
| 最近记录: |