从Woocommerce产品页面删除到单个页面的链接

时间:2019-05-28 06:47:37

标签: php wordpress woocommerce

我一直在尝试删除指向Woocommerce插件的单个产品页面的链接。在这个论坛上,许多人对此提出了疑问,并阅读了其中的大部分内容。但是几乎所有这些问题都是古老的。但是据我现在的理解,我必须使用functions.php和content-page.php来实现这一点。

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

if ( !function_exists('add_remove_hooks')):
function add_remove_hooks() {
    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 );
    }
endif;
add_action( 'init', 'add_remove_hooks' );

我尝试了所有种类的变体,例如仅放在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“使用”,因为如果我更改了其中一个文件中的内容,则会在屏幕上看到它。但是,链接仍然存在。 remove_action无法正常工作。

有人对如何做到这一点有其他建议吗?寻找什么?

使用WP 5.2和Woocommerce 3.0

2 个答案:

答案 0 :(得分:0)

在主题的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 );

答案 1 :(得分:0)

尝试一下:

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 );
 }
 }