intrepidrealist
  • 0
Новичок

Удалить заголовок страницы со статической главной страницы

  • 0

Я хотел бы удалить заголовок поста со своей статической главной страницы. Только эта страница. Я создал дочернюю тему из бесплатной темы Press75. Поэтому я хотел бы внести это изменение в файл function.php моей дочерней темы.

Я использовал этот код, но он удаляет заголовок со всех страниц, сообщений и моей навигации:

add_filter( 'the_title', 'remove_page_title' );

function remove_page_title() {
    if(is_page('138')) {
    }
    return '';
}

Думал просто удалит заголовок со страницы с ID 138. Что я делаю не так?

Спасибо!

Share
  1. оберните вызов функции add_filter вокруг условного тега и используйте встроенную функцию return false:

    if ( is_page('138') )
    {
          add_filter( 'the_title', '__return_false' );
    }
    
    • 0
  2. У тебя почти получилось!

    Вот ваш исходный код:

    add_filter( 'the_title', 'remove_page_title' );
    
    function remove_page_title() {
       if(is_page('138')) {
       }
       return '';
    }
    

    Что он делает, так это добавляет фильтр the_title, который не принимает никаких параметров. Это твоя первая ошибка. На the_title самом деле фильтр принимает два параметра — заголовок страницы/записи и идентификатор страницы/записи. Итак, сначала давайте перепишем наш хук:

    add_filter( 'the_title', 'remove_page_title', 10, 2 );
    function remove_page_title( $title, $id ) {
    
    }
    

    Это назначает нашему фильтру приоритет 10 и позволяет нам принимать оба параметра, отправленные фильтром. Затем мы указываем параметры, которые принимает наша функция.

    Внутри функции мы хотим проверить, находимся ли мы на правильной странице. Если да, верните '', если нет, верните заголовок:

    if( '138' == $id ) return '';
    
    return $title;
    

    Ваша исходная функция всегда возвращалась '' при запуске фильтра. Вот почему вы получали пустой заголовок на каждой странице, а не только на странице, которую вы хотели.

    Наш полный код

    Итак, ваш полный фильтр, переписанный для приема параметров и использования правильной логики:

    add_filter( 'the_title', 'remove_page_title', 10, 2 );
    
    function remove_page_title( $title, $id ) {
        if( '138' == $id ) return '';
    
        return $title;
    }
    
    • 0
  3. Вот как можно удалить основной заголовок заголовка (не тег) с главной страницы в 2020 году, не удаляя при этом the_title из пунктов меню:

    function no_title_front_page( $title, $id = null ) {
        if (is_front_page() && !is_null( $id )) {
            return '';
        }
        return $title;
    
    }
    
    add_filter( 'the_title', 'no_title_front_page', 10, 2 );
    
    
    function wpse309151_remove_title_filter_nav_menu( $nav_menu, $args ) {
        // we are working with menu, so remove the title filter
        remove_filter( 'the_title', 'no_title_front_page', 10, 2 );
        return $nav_menu;
    
    }
    
    // this filter fires just before the nav menu item creation process
    add_filter( 'pre_wp_nav_menu', 'wpse309151_remove_title_filter_nav_menu', 10, 2 );
    
    function wpse309151_add_title_filter_non_menu( $items, $args ) {
        // we are done working with menu, so add the title filter back
        add_filter( 'the_title', 'no_title_front_page', 10, 2 );
        return $items;
    
    }
    
    // this filter fires after nav menu item creation is done
    add_filter( 'wp_nav_menu_items', 'wpse309151_add_title_filter_non_menu', 10, 2 );
    

    Код на основе этого ответа.

    • 0
  4. Один из способов для header.php:

    <?php if (is_page('138')) { echo'
    <style type="text/css" title="text/css">
    yourpagetitleselector {display:none;}
    </style>'
    ; ?>
    
    • 0
  5. Если я вас правильно понял, вы хотите отобразить no <title> на главной странице, вы можете использовать:

    <title><?php if ( ! is_front_page() ) { the_title(); } ?></title>
    
    • 0

Оставить ответ

You must login to add an answer.