WooCommerce: Как убрать заголовок страницы на главной/магазине, сохранив его на страницах категорий
Я установил страницу "магазин" как главную страницу сайта и хочу удалить стандартный заголовок woocommerce с главной страницы. Я очистил заголовок, но на главной странице все равно остается пустой тег:
<h1 class="woocommerce-products-header__title page-title"></h1>
Это создает пустое пространство над контентом, что раздражает. Я попробовал следующие решения, и они работают, НО заголовок страницы для страниц категорий также удаляется. Я хочу, чтобы заголовок удалялся только на главной странице.
Первое решение: Я добавил следующий код в мои стили:
.woocommerce-page .page-title { display: none; }
Добавил следующее в function.php
add_filter('woocommerce_show_page_title', '__return_false');
Повторюсь, эти решения делают то, что должны, но я хочу, чтобы заголовок страницы для категорий остался, и только заголовок на главной странице был удален.

Фильтр woocommerce_show_page_title
показывает заголовок страницы, если переданный аргумент равен true
. Функция делает аргумент true
для всех страниц, которые "не являются страницей магазина", и false
для страницы магазина.

Понял, но, кажется, мне никогда не приходилось использовать return boolval
в WordPress для определения, находимся ли мы на странице магазина. Я бы сказал, что эту часть должно быть проще написать.

Привет, вы можете сделать эту вещь, и я надеюсь, что это сработает и для вас.
<?php
if (!is_shop()) {
if ( apply_filters( 'woocommerce_show_page_title', true ) ) { ?>
<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>
<?php }else{ ?>
<h1 class="page-title"><?php echo ''; ?>
}
} ?>
Для дополнительной информации предпочитайте эту ссылку

Несколько альтернативных способов сделать это:
- Удалите код заголовка из home.php вашей темы
- Создайте шаблон для страницы товаров
- Для главной страницы, если вы используете frontpage.php, то достаточно просто удалить его оттуда. В противном случае, можно воспользоваться последним пунктом, указанным ниже
- Перейдите в ваш page.php и напишите простое условное выражение для проверки, является ли страница главной. Ссылка на документацию WordPress по этому условному выражению приведена ниже
https://developer.wordpress.org/reference/functions/is_home/

Вы можете переопределить шаблон WooCommerce "archive-product.php" в вашей текущей теме и заменить его этим кодом.
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
<?php if(!is_shop()) { ?>
<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>
<?php } ?>
<?php endif; ?>
Для справки: условные теги WooCommerce
ИЛИ
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
<?php if(is_product_category()) { ?>
<h1 class="page-title"><?php woocommerce_page_title(); ?></h1>
<?php } ?>
<?php endif; ?>

Этот файл находится в папке плагинов. Разве его изменение не противоречит цели создания дочерней темы? То есть, разве я не могу изменять вещи внутри своей дочерней темы, чтобы не беспокоиться об обновлениях или изменениях, вносимых плагинами?

Нет, никакого противоречия при обновлении плагина не возникнет, если вы переопределите шаблон в теме. Ссылка на руководство по переопределению файлов шаблонов WooCommerce в дочерней теме: https://v4.datafeedr.com/documentation/580

Я только что сделал это для своего сайта, но более сложным путем.
- Я отредактировал файл archive-product.php в редакторе файлов темы и изменил:
<h1 class="entry-title"><?php woocommerce_page_title(); ?></h1>
На:
<h6 class="entry-title"><?php woocommerce_page_title(); ?></h6>
- Затем я отредактировал таблицу стилей и добавил:
h6 {display: none;}
Очевидно, что не стоит использовать это решение, если у вас есть заголовки h6 в коде, но для простого решения оно работает.
