我一直在尝试删除指向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
答案 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 );
}
}