Поддержка Проблемы и решения Не срабатывает remove_filter

  • В коде плагина woocommerce есть такая штука
    add_action( ‘woocommerce_after_single_product_summary’, ‘woocommerce_upsell_display’, 15 );

    Мне нужно вывод апсейлов убрать. Делаю так — в functions.php Child-темы (в родительской тоже пробовал) добавил
    remove_filter( ‘woocommerce_after_single_product_summary’, ‘woocommerce_upsell_display’, 15 );

    Но этот remove_filter наверное не срабатывает. Апсейлы по-прежнему выводятся. (кеш чистил, в разных браузерах пробовал).

    Возможно, что-то не так делаю.

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • так вы их не добавляйте в товары, они и не будут выводиться

    Нужно через remove_filter все сделать, а не править код в теме или плагине

    Модератор Yuri

    (@yube)

    Возможно, add_filter срабатывает после remove_filter. Попробуйте remove выполнять на каком-нибудь хуке поближе к выводу страницы.

    выполнять на каком-нибудь хуке поближе к выводу страницы.

    Где например? Не особо в этом ориентируюсь.

    Модератор Yuri

    (@yube)

    Например, непосредственно перед определением используемого шаблона

    add_action( 'template_redirect', function() {
        remove_filter( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
    });
    

    Нужно через remove_filter все сделать, а не править код в теме или плагине

    так я этого и не предлагал.
    Я предлагал двойную работу не делать: сперва задавать товарам апсейлы, а потом их прятать.

    Для меня это вообще дико звучит.
    Зачем что-то добовлять, если потом это прячешь?

    add_action( ‘template_redirect’, function() {
    remove_filter( ‘woocommerce_after_single_product_summary’, ‘woocommerce_upsell_display’, 15 );
    });

    Если в этом коде не нужно ничего менять, то этот вариант не помог.

    `так я этого и не предлагал.
    Я предлагал двойную работу не делать: сперва задавать товарам апсецлы, а потом их прятать.

    Для меня это вообще дико звучит.
    Зачем что-то добовлять, если потом это прячешь?`

    Текущая тема их выводит не в том месте, где мне нужно. Хочу в одном месте убрать, а выводить в другом.

    Текущая тема их выводит не в том месте, где мне нужно. Хочу в одном месте убрать, а выводить в другом.

    Почему этого нельзя было сразу сказать.

    Кстати вся информация по хукам в вашей секретной теме должна быть в документации. В крайнем случае всегда можно задать вопрос ее автору.

    Тема OceanWP. Секретов нет.
    Вот код из файла wc-template-hooks.php

    /**
     * After Single Products Summary Div.
     *
     * @see woocommerce_output_product_data_tabs()
     * @see woocommerce_upsell_display()
     * @see woocommerce_output_related_products()
     */
    add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
    add_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
    add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );

    у этой темы отличная документация и прикрасная поддержка.
    И про хуки в той документации не одна страница описания.
    Может все-таки пора покурить мануал, что бы в соепую перестать тыкать?

    Читал документацию, но как видите особо это не помогло.

    ну так задайте вопрос авторам темы. Они ее очень хорошо знают, не поверите.

    задал. тишина.

Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Тема «Не срабатывает remove_filter» закрыта для новых ответов.