我正在尝试删除产品页面中产品标题后显示的产品之间的导航。
导航设置在woocommerce.php
我的主题文件:
/**
* Class for all WooCommerce template modification
*
* @version 1.0
*/
class MrBara_WooCommerce {
...
/**
* Hooks to WooCommerce actions, filters
*
* @since 1.0
* @return void
*/
function hooks() {
...
// Add prev/next product
if ( in_array( mrbara_theme_option( \'product_page_layout\' ), array( \'1\', \'2\', \'8\', \'9\', \'12\' ) ) ) {
add_action( \'woocommerce_single_product_summary\', array( $this, \'products_links\' ), 0 );
}
...
/**
* Display products link
*
* @since 1.0
*/
function products_links() {
if ( function_exists( \'is_product\' ) && ! is_product() ) {
return;
}
$prev_link = \'<span class="ion-ios-arrow-back"></span>\';
$next_link = \'<span class="ion-ios-arrow-forward"></span>\';
...
?>
<div class="products-links">
<?php
previous_post_link( \'<div class="nav-previous">%link</div>\', $prev_link );
next_post_link( \'<div class="nav-next">%link</div>\', $next_link );
?>
</div>
<?php
}
}
我刚刚开始了解Wordpress是如何工作的,就目前为止我所了解的情况而言,我认为我必须删除该操作
products_links
.
Test 1
所以,在我的
functions.php
在我的孩子主题中,我写了这样一句话:
// Remove previous and next link in the product title
add_action(\'woocommerce_single_product_summary\', \'remove_products_links\');
function remove_products_links() {
remove_action(\'products_links\', \'woocommerce_single_product_summary\' );
}
我将“删除函数”添加到
woocommerce_single_product_summary
因为添加产品链接的操作与之挂钩。
但这行不通。
所以我深入研究了文档
但这不起作用。
因此,在Wordpress的文档中深入挖掘,我阅读了以下内容:
如果某个操作是从类中添加的,例如通过插件添加的,则删除该操作将需要通过保存类实例的变量访问该类。除非函数是静态的,在这种情况下,您可以直接调用类和函数。
所以,这就是我的情况!我的动作由类添加MrBara_WooCommerce
在方法中hooks()
以及行动的方法products_links()
不是静态的,所以我也需要调用该类。
Test 2
add_action(\'woocommerce_single_product_summary\', \'remove_products_links\');
function remove_products_links() {
remove_action(\'products_links\', [\'MrBara_WooCommerce\', \'woocommerce_single_product_summary\'] );
}
这也没用。
我也试着处理优先事项remove_products_links
在9
, 在11
, 在10
和在0
(以匹配原始添加操作的优先级)但这一切都不起作用。
我想我很接近解决方案,但我的经验不足导致我错过了一些相关设置。
你能帮我更好地理解为什么我remove_action
不起作用?
UPDATE
继续阅读我发现
functions.php
我的子主题的文件在父主题的文件之前加载(
https://wordpress.stackexchange.com/a/170665/57145).
我对印刷整个$wp_filter
变量使用functions.php
子主题的文件。
所以,打印时,我看到remove_products_links
我注册的操作,但没有看到products_links
我正在尝试删除的操作。
所以我认为注册订单中一定存在一些问题。
现在,我认为我无法删除该操作,因为当我注册删除操作时,我要删除的操作不存在。
The question, so, becomes: how can I remove an action from the parent theme using the child theme?