Удалить ссылку на одну страницу со страницы продукта Woocommerce - PullRequest
0 голосов
/ 28 мая 2019

Я пытался удалить ссылку на страницу отдельного продукта плагина 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

ОБНОВЛЕНИЕ:

Благодаря Альфаразу я смог решить проблему.Помещение remove_actions в functions.php дочерней темы теперь также работает.Я не осознавал, что мне также нужно было установить активную тему в WP на мою дочернюю тему.Это сделало трюк в конце.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Попробуйте это:

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 );
 }
 }
0 голосов
/ 28 мая 2019

Введите код ниже в 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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...