Как отключить вывод стандартного метатега тайтл в wordpress?

Ссылка скопирована
1 ответ

Здравствуйте.
Сайт небольшой, хочу сделать добавление метатегов без плагина, тем более, что кода несколько строк.
Я настроил добавление тайтла и дискрипшина через дополнительные поля, но теперь у меня на страницах выводиться дескрипшин и сразу два тайтла - мой и стандартный (из заголовка страницы). Очень давно на занимался вордпресом, уже не помню. Подскажите пожалуйста, как скрыть второй тайтл, или получить к нему доступ?

<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(); ?>

Как отключить вывод стандартного метатега тайтл в wordpress?

Дополнительно:

Как отключить вывод стандартного метатега тайтл в wordpress?

Попробуйте это вставить в файл 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' );

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

В современных темах 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;
});

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 '&lt;meta name="description" content="' . esc_attr($desc) . '"&gt;' . "n";
});

add_action('wp_head', function () { if (!is_singular()) { return; } $desc = get_post_meta(get_the_ID(), 'home_page_desc', true); if (!$desc) { return; } echo '&lt;meta name="description" content="' . esc_attr($desc) . '"&gt;' . "n"; });

Если хотите полностью отключить стандартный title-tag, можно убрать поддержку темы:

remove_theme_support('title-tag');

remove_theme_support('title-tag');

Но это хуже, чем использовать фильтр. Стандартный механизм WordPress учитывает пагинацию, архивы, поиск, разделитель и совместимость с SEO-плагинами.

Также в Вашем коде есть ошибка: the_field() сразу выводит значение, а не возвращает его. Для присваивания переменной используйте get_field(), если это ACF.

Итог: удалите ручной <title> из шаблона и управляйте title через фильтр. Так будет один title, а не два, и не придётся вручную расписывать десятки условий в header.php.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно