Как отключить вывод стандартного метатега тайтл в wordpress?
Здравствуйте.
Сайт небольшой, хочу сделать добавление метатегов без плагина, тем более, что кода несколько строк.
Я настроил добавление тайтла и дискрипшина через дополнительные поля, но теперь у меня на страницах выводиться дескрипшин и сразу два тайтла - мой и стандартный (из заголовка страницы). Очень давно на занимался вордпресом, уже не помню. Подскажите пожалуйста, как скрыть второй тайтл, или получить к нему доступ?
<title><?php if( is_home() || is_front_page() ){$title = the_field('home_page_title'); } if( is_single()) { $title = the_field('home_page_title'); } if( is_category() ) { $title = the_field('home_page_title'); } if( is_page(16) ) { $title = the_field('download_title'); } if( is_page(18) ) { $title = the_field('faq_page_title'); } ?></title> <meta name="description" content="<?php if( is_home() || is_front_page() ){ echo the_field('home_page_desc'); } if( is_single()) { echo the_field('home_page_desc'); } if( is_page(16)) { echo the_field('download_desc'); } if( is_page(18) ) { echo the_field('faq_page_decr'); } ?>"> <?php wp_head(); ?> |
<title><?php if( is_home() || is_front_page() ){$title = the_field('home_page_title'); } if( is_single()) { $title = the_field('home_page_title'); } if( is_category() ) { $title = the_field('home_page_title'); } if( is_page(16) ) { $title = the_field('download_title'); } if( is_page(18) ) { $title = the_field('faq_page_title'); } ?></title> <meta name="description" content="<?php if( is_home() || is_front_page() ){ echo the_field('home_page_desc'); } if( is_single()) { echo the_field('home_page_desc'); } if( is_page(16)) { echo the_field('download_desc'); } if( is_page(18) ) { echo the_field('faq_page_decr'); } ?>"> <?php wp_head(); ?>
Дополнительно:
Попробуйте это вставить в файл function.php
remove_action('wp_head', '_wp_render_title_tag',1); |
remove_action('wp_head', '_wp_render_title_tag',1);
- Спасибо, добрый человек.
Одна строка и проблемы нет) - vova1213, Рад помочь )
Ответы:
Лучше использовать хук pre_get_document_title, который позволяет переопределить заголовок, а не полностью убить функцию
if ( ! function_exists( 'pre_get_document_title_callback' ) ) { /** * Function for 'pre_get_document_title' filter-hook. * * @param string $title The document title. * * @return string */ function pre_get_document_title_callback( $title ) { if ( is_home() || is_front_page() ) { $title = get_field( 'home_page_title' ); } if ( is_single() ) { $title = get_field( 'home_page_title' ); } if ( is_category() ) { $title = get_field( 'home_page_title' ); } if ( is_page( 16 ) ) { $title = get_field( 'download_title' ); } if ( is_page( 18 ) ) { $title = get_field( 'faq_page_title' ); } return $title; } } add_filter( 'pre_get_document_title', 'pre_get_document_title_callback' ); |
if ( ! function_exists( 'pre_get_document_title_callback' ) ) { /** * Function for 'pre_get_document_title' filter-hook. * * @param string $title The document title. * * @return string */ function pre_get_document_title_callback( $title ) { if ( is_home() || is_front_page() ) { $title = get_field( 'home_page_title' ); } if ( is_single() ) { $title = get_field( 'home_page_title' ); } if ( is_category() ) { $title = get_field( 'home_page_title' ); } if ( is_page( 16 ) ) { $title = get_field( 'download_title' ); } if ( is_page( 18 ) ) { $title = get_field( 'faq_page_title' ); } return $title; } } add_filter( 'pre_get_document_title', 'pre_get_document_title_callback' );
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


В современных темах WordPress стандартный тег
<title>выводится через поддержкуtitle-tagи функциюwp_head(). Если Вы вручную добавили свой<title>в header.php, а тема ещё поддерживаетtitle-tag, получите два title.Правильный путь — не писать
<title>вручную, а менять title через фильтрpre_get_document_titleилиdocument_title_parts.add_filter('pre_get_document_title', function ($title) { if (is_singular()) { $custom = get_post_meta(get_the_ID(), 'home_page_title', true); if ($custom) { return $custom; } } return $title; });
Description выводите отдельно в
wp_head:add_action('wp_head', function () { if (!is_singular()) { return; } $desc = get_post_meta(get_the_ID(), 'home_page_desc', true); if (!$desc) { return; } echo '<meta name="description" content="' . esc_attr($desc) . '">' . "n"; });
Если хотите полностью отключить стандартный title-tag, можно убрать поддержку темы:
remove_theme_support('title-tag');
Но это хуже, чем использовать фильтр. Стандартный механизм WordPress учитывает пагинацию, архивы, поиск, разделитель и совместимость с SEO-плагинами.
Также в Вашем коде есть ошибка:
the_field()сразу выводит значение, а не возвращает его. Для присваивания переменной используйтеget_field(), если это ACF.Итог: удалите ручной
<title>из шаблона и управляйте title через фильтр. Так будет один title, а не два, и не придётся вручную расписывать десятки условий в header.php.