Php 从Woocommerce产品页面删除指向单个页面的链接

Php 从Woocommerce产品页面删除指向单个页面的链接,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我一直试图删除Woocommerce插件的单一产品页面的链接。在这个论坛上,许多人提出了关于它的问题,并且已经阅读了其中的大部分。但几乎所有这些问题都是老生常谈。然而,据我所知,现在我必须使用functions.php和content-page.php来实现这一点 因此,在阅读了i-net上的所有信息后,我在functions.php(在我的子主题文件夹中)中找到了这段代码 我尝试过所有类型的变体,比如只在remove_action行中放置,不在函数中包装,或者在add_action函数中使用其

我一直试图删除Woocommerce插件的单一产品页面的链接。在这个论坛上,许多人提出了关于它的问题,并且已经阅读了其中的大部分。但几乎所有这些问题都是老生常谈。然而,据我所知,现在我必须使用functions.php和content-page.php来实现这一点

因此,在阅读了i-net上的所有信息后,我在functions.php(在我的子主题文件夹中)中找到了这段代码

我尝试过所有类型的变体,比如只在remove_action行中放置,不在函数中包装,或者在add_action函数中使用其他操作,但它们似乎都不起作用。但是,语法是应该的

content-page.php的(部分)如下所示

<li <?php post_class( $classes ); ?>>
    <?php do_action( 'woocommerce_before_shop_loop_item' ); ?>

        <?php
            /**
             * woocommerce_before_shop_loop_item_title hook
             *
             * @hooked woocommerce_show_product_loop_sale_flash - 10
             * @hooked woocommerce_template_loop_product_thumbnail - 10
             */
            do_action( 'woocommerce_before_shop_loop_item_title' ); ?>

        <?php if($product_style == 'classic') { 
            do_action( 'woocommerce_shop_loop_item_title' );
            do_action( 'woocommerce_after_shop_loop_item_title' ); 
        } ?>

    <?php do_action( 'woocommerce_after_shop_loop_item' ); ?>

</li>


我不知道如何在PHP中调试,但我知道这些文件被WP“使用”,因为如果我更改其中一个文件中的某些内容,我会在屏幕上看到它。然而,这些链接仍然存在。“删除”操作不起作用

anyobody对如何实现这一点还有其他建议吗?寻找什么

使用WP 5.2和Woocommerce 3.0

更新:


多亏了阿法拉兹,我才解决了这个问题。现在,将remove_操作放在子主题的functions.php中也可以了。我没有意识到我还必须将WP中的活动主题设置为我的孩子主题。这最终成功了。

在主题的
functions.php
文件中添加下面的代码

// Remove links to the product details pages from the product listing page of a WooCommerce store
remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
试试这个:

function remove_direct_link_to_product_page() {
 if ( is_product() && is_product_category(array('category-slug') ) ) { 
remove_action( ‘woocommerce_before_shop_loop_item’,
‘woocommerce_template_loop_product_link_open’, 10 ); 
remove_action( ‘woocommerce_after_shop_loop_item’,
‘woocommerce_template_loop_product_link_close’, 5 );
 }
 }

嗨,Alfaraz,谢谢你的回复,但是在我将代码包装到函数中之前,我已经尝试过了。也不管用。嗨,阿法拉兹,原来我没把你的答案读清楚。我专注于子主题的functions.php,这就是我添加函数的地方。如果我使用您的建议,将这两行放在活动主题的functions.php中,它就可以工作了。谢谢,但现在我想知道,当我在我的孩子theme functions.php中使用代码时,为什么is不起作用。现在的问题是,新版本将覆盖主题的functions.php,因此我放弃了我的更改。如果您对如何在child-theme-functions.php.Hi-Pullata中使用它有任何建议,谢谢您的回复。但是有什么区别呢?删除操作似乎对我不起作用。您使用的是最新版本的woocommerce吗?3.6.4? 此外,这些钩子从中调用的文件是。您正在使用的文件是覆盖吗?@gregbast1994是的,我使用3.6.4,不是,我没有使用覆盖。我只在de functions.php中添加了删除挂钩的功能。为什么?我是否必须更改content-product.php中的某些内容才能使其正常工作?
function remove_direct_link_to_product_page() {
 if ( is_product() && is_product_category(array('category-slug') ) ) { 
remove_action( ‘woocommerce_before_shop_loop_item’,
‘woocommerce_template_loop_product_link_open’, 10 ); 
remove_action( ‘woocommerce_after_shop_loop_item’,
‘woocommerce_template_loop_product_link_close’, 5 );
 }
 }