WooCommerce: Как убрать заголовок страницы на главной/магазине, сохранив его на страницах категорий

23 нояб. 2017 г., 04:20:19
Просмотры: 43.3K
Голосов: 7

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

<h1 class="woocommerce-products-header__title page-title"></h1>

Это создает пустое пространство над контентом, что раздражает. Я попробовал следующие решения, и они работают, НО заголовок страницы для страниц категорий также удаляется. Я хочу, чтобы заголовок удалялся только на главной странице.

  1. Первое решение: Я добавил следующий код в мои стили:

    .woocommerce-page .page-title {
     display: none;
    }
    
  2. Добавил следующее в function.php

    add_filter('woocommerce_show_page_title', '__return_false');
    

Повторюсь, эти решения делают то, что должны, но я хочу, чтобы заголовок страницы для категорий остался, и только заголовок на главной странице был удален.

1
Комментарии

имейте в виду, что этот фильтр работает только если объявлена поддержка темы. я сходил с ума, пытаясь понять, почему у меня это вообще не работает..

honk31 honk31
13 мар. 2019 г. 19:06:16
Все ответы на вопрос 6
4

Вместо изменения шаблонов, вы можете добавить этот код в functions.php дочерней темы:

add_filter( 'woocommerce_show_page_title', 'not_a_shop_page' );
function not_a_shop_page() {
    return boolval(!is_shop());
}
12 нояб. 2018 г. 06:44:16
Комментарии

Не знаю как... но это работает!

klewis klewis
3 июн. 2019 г. 23:45:27

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

Ryszard Jędraszyk Ryszard Jędraszyk
4 июн. 2019 г. 00:18:54

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

klewis klewis
4 июн. 2019 г. 15:05:36

К сожалению, это не удаляет HTML-элемент <header class="woocommerce-products-header"> </header>

InanisAtheos InanisAtheos
27 июл. 2021 г. 14:01:38
0

Привет, вы можете сделать эту вещь, и я надеюсь, что это сработает и для вас.

<?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 ''; ?>
    }
  } ?>

Для дополнительной информации предпочитайте эту ссылку

23 нояб. 2017 г. 06:24:44
0

Чтобы убрать заголовок только со страницы товара, необходимо добавить этот код в ваши CSS-стили

.product-template-default .woocommerce-products-header {
   display: none;
}
17 июл. 2020 г. 14:53:27
0

Несколько альтернативных способов сделать это:

  1. Удалите код заголовка из home.php вашей темы
  2. Создайте шаблон для страницы товаров
  3. Для главной страницы, если вы используете frontpage.php, то достаточно просто удалить его оттуда. В противном случае, можно воспользоваться последним пунктом, указанным ниже
  4. Перейдите в ваш page.php и напишите простое условное выражение для проверки, является ли страница главной. Ссылка на документацию WordPress по этому условному выражению приведена ниже

https://developer.wordpress.org/reference/functions/is_home/

23 нояб. 2017 г. 05:44:39
2

Вы можете переопределить шаблон 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; ?>
23 нояб. 2017 г. 05:54:57
Комментарии

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

user7432810 user7432810
23 нояб. 2017 г. 20:47:34

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

Jignesh Patel Jignesh Patel
24 нояб. 2017 г. 05:53:05
1

Я только что сделал это для своего сайта, но более сложным путем.

  1. Я отредактировал файл archive-product.php в редакторе файлов темы и изменил:

<h1 class="entry-title"><?php woocommerce_page_title(); ?></h1>

На:

<h6 class="entry-title"><?php woocommerce_page_title(); ?></h6>

  1. Затем я отредактировал таблицу стилей и добавил:

h6 {display: none;}

Очевидно, что не стоит использовать это решение, если у вас есть заголовки h6 в коде, но для простого решения оно работает.

16 сент. 2022 г. 02:48:07
Комментарии

Вы можете просто использовать h6.entry-title вместо общего h6 - это хотя бы уменьшит область применения правила.

Tony Djukic Tony Djukic
27 сент. 2022 г. 23:47:54