Как заменить заголовок категории Woocommerce на ACF посредством functions.php?

Здравствуйте!
Подскажите пожалуйста как правильно сформировать функцию в functions.php, чтобы заголовок категории товаров Woocommerce менялся на значение поля Advanced Custom Fields, если оно заполнено. Исходные данные: имеется созданное текстовое поле ACF с именем h1_title и имеется имя категории товаров Woocommerce. Требуется: при заполненном h1_title, чтобы на сайте выводилось значение h1_title, но если h1_title не заполнено — выводится стандартное имя категории Woocommerce. Обязательно это сделать через functions.php.
Я знаю как заменить заголовок на всех категориях Woo на постоянное значение, но как вместо него поставить значение доп.поля?

add_filter( 'woocommerce_page_title', 'custom_woocommerce_page_title' );
function custom_woocommerce_page_title() {
    return 'Test';
}
  • Вопрос задан
  • 675 просмотров
Пригласить эксперта
Ответы на вопрос 2
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce
Тезисами:
- is_tax( 'product_cat' ) - условный тег позволит выполнять код только на страницах категорий продуктов.
- get_queried_object()->term_id - коли мы находимся на странице категорий продуктов так можно получить term_id который сейчас открыт
- get_term_meta() - зная term_id мы так пожем получить значение его метаполя по ключу h1_title

Ну там кое где добавить разные проверки на пустоту.

И если удалось получить нужное значение то подставить его в переменную.

Перед этим нужно не забыть что в вашем примере в функции custom_woocommerce_page_title() - в скобочках должна быть переменная. Иначе фильтр сломается. Будет пушистый зверь.
Ответ написан
Комментировать
Dron_Vegas
@Dron_Vegas Автор вопроса
Неужели никто не знает готового решения? То что посоветовали выше конечно хорошо, но если бы я знал как это все записать в functions я бы пришел к этому и сам по документации ACF.

Пишу сейчас вот так:
add_filter( 'woocommerce_page_title', 'custom_title' );
function custom_title( $title ) {
    $title = '<?php the_field("h1_title", "product_cat_" . $product_cat_object->term_id); ?>';
    return $title;
}


Но на странице категории получаю вместо тайтла: term_id); ?>
Понятно что в строке
$title = '<?php the_field("h1_title", "product_cat_" . $product_cat_object->term_id); ?>';
что то неправильно написано, но может подскажите как это записать правильно?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы