Переименование кнопки Woocommerce, часто покупаемой вместе (ДОБАВИТЬ В КОРЗИНУ)

Я пытаюсь переименовать некоторые конкретные продукты в woocommerce, отдельные продукты и часто покупаемые вместе. Приведенный ниже код хорошо работает для кнопок отдельных продуктов, но как мне переименовать часто покупаемые вместе кнопки для одних и тех же конкретных продуктов?

add_filter( 'woocommerce_product_single_add_to_cart_text', 'custom_single_loop_add_to_cart_button', 20, 1 );
function custom_single_loop_add_to_cart_button( $button_text ) {
    global $product;

    // Define your specific product IDs in this array
    $specific_ids = array(22246, 22241, 22227, 22039, 22009, 22004, 21999, 21991);
    
    if (in_array($product->get_id(), $specific_ids)) {
        $button_text = __("PRE ORDER", "woocommerce");
    } else {
        // Check if the product is purchasable
        if ($product->is_purchasable()) {
            $button_text = __("Add to Cart", "woocommerce");
        }
    }

    return $button_text;
}

Я пробовал этот код, но он не сработал

add_action( 'woocommerce_after_single_product_summary', 'custom_frequently_bought_together_button', 25 );
function custom_frequently_bought_together_button() {
    global $product;

    // Define your specific product IDs in this array
    $specific_ids = array(22246, 22241, 22227, 22039, 22009, 22004, 21999, 21991);

    // Check if the product is one of the specified ones
    if (in_array($product->get_id(), $specific_ids)) {
        // Modify the "Frequently Bought Together" button text
        add_filter( 'woocommerce_fbt_add_to_cart_text', 'custom_fbt_add_to_cart_text' );
    }
}

function custom_fbt_add_to_cart_text( $button_text ) {
    // Change the button text to "PRE ORDER" for "Frequently Bought Together" products
    return __("PRE ORDER", "woocommerce");
}

Правильный фильтр для изменения текста кнопки для отдельных страниц продукта — woocommerce_product_single_add_to_cart_text, а для страниц архива: woocommerce_product_add_to_cart_text, как предложено в этом SO-посте . Также см. этот конкретный ответ Измените текст кнопки «Добавить в корзину» для определенных продуктов в Woocommerce

Richard 10.05.2024 13:17

Хук фильтра woocommerce_fbt_add_to_cart_text не существует в WooCommerce.

Richard 10.05.2024 13:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вместо этого попробуйте следующий упрощенный код:

add_filter( 'woocommerce_product_single_add_to_cart_text', 'filter_product_single_add_to_cart_text', 20, 2 );
function filter_product_single_add_to_cart_text( $add_to_cart_text, $product ) {
    // Define your targeted product IDs in the array below
    $targeted_ids = array(22246, 22241, 22227, 22039, 22009, 22004, 21999, 21991);
    
    if (in_array($product->get_id(), $targeted_ids)) {
        $add_to_cart_text = __("PRE ORDER", "woocommerce");
    }
    return $add_to_cart_text;
}

Он должен работать.

  1. Проверьте, есть ли в плагине Woocommerce Часто покупаемые вместе фильтр woocommerce_fbt_add_to_cart_text

  2. Если фильтр существует, попробуйте добавить приоритет и принятые аргументы, например:

    add_filter('woocommerce_fbt_add_to_cart_text', 'custom_fbt_add_to_cart_text', 99, 1);

Проверьте синтаксис WordPress add_filter: Нажмите.

add_filter(строка $hook_name, вызываемый $callback, int $priority = 10, int $accepted_args = 1);

Другие вопросы по теме