Я пытаюсь переименовать некоторые конкретные продукты в 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_fbt_add_to_cart_text
не существует в WooCommerce.
Вместо этого попробуйте следующий упрощенный код:
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;
}
Он должен работать.
Проверьте, есть ли в плагине Woocommerce Часто покупаемые вместе фильтр woocommerce_fbt_add_to_cart_text
Если фильтр существует, попробуйте добавить приоритет и принятые аргументы, например:
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);
Правильный фильтр для изменения текста кнопки для отдельных страниц продукта —
woocommerce_product_single_add_to_cart_text
, а для страниц архива:woocommerce_product_add_to_cart_text
, как предложено в этом SO-посте . Также см. этот конкретный ответ Измените текст кнопки «Добавить в корзину» для определенных продуктов в Woocommerce