Пользовательский атрибут тега title с wp_title ()

Могу ли я добавить itemprop в элемент title и использовать wp_head() и add_theme_support( "title-tag" ) ?

Я хочу создать тему и утвердить ее на wordpres.org, который использует микроданные.

Предыдущее среднее я хочу, чтобы код HTML выглядел следующим образом:

 <html itemscope itemtype="http://schema.org/WebPage" lang="en-US"> .... <title itemprop="name">WordPress Weblog Theme – Just another WordPress site</title> .... 

Теперь я не использую add_theme_support( "title-tag" ) и использую следующий код в header.php?

 <title itemprop="name"><?php echo wp_get_document_title(); ?></title> <?php wp_head(); ?> 

Теперь плагин проверки темы гласит:

ТРЕБУЕТСЯ: тема должна иметь вызов wp_title (), в идеале в файле header.php. ТРЕБУЕТСЯ: тема должна иметь теги, в идеале – в файле header.php. РЕКОМЕНДУЕТСЯ: Ссылка на add_theme_support ("title-tag") не найдена в теме. Рекомендуется, чтобы тема реализовала эту функциональность для WordPress 4.1 и выше.

Solutions Collecting From Web of "Пользовательский атрибут тега title с wp_title ()"

Поскольку все _wp_render_title_tag делает проверку на поддержку темы title-tag и завершают теги <title> , нет никакой причины, по которой ваша существующая реализация «не пройдет», поскольку правильная реализация уже идентична через:

 <title itemprop="name"><?php echo wp_get_document_title(); ?></title> 

когда _wp_render_title_tag делает:

 echo '<title>' . wp_get_document_title() . '</title>' . "\n"; 

(так как «Проверка темы» является контрольной проверкой, так что, если она не может сказать, что на самом деле соблюдался стандарт, это теоретически не должно препятствовать ее прохождению?)

Но в любом случае вы можете обойти это и улучшить существующую реализацию одновременно, добавив фильтр переопределения настроек …, отвязав существующее действие (как это было предложено @birgire) и (мое добавление), подключив функцию обертывания, которая вызывает _wp_render_title_tag и применяет к нему фильтр:

 if (has_action('wp_head','_wp_render_title_tag') == 1) { remove_action('wp_head','_wp_render_title_tag',1); add_action('wp_head','custom_wp_render_title_tag_filtered',1); } function custom_wp_render_title_tag_filtered() { if (function_exists('_wp_render_title_tag')) { ob_start(); _wp_render_title_tag(); $titletag = ob_get_contents(); ob_end_clean(); } else {$titletag = '';} return apply_filters('wp_render_title_tag_filter',$titletag); } 

Так как лучше использовать фильтр в любом случае ……. Тогда вы можете легко добавить свои собственные варианты использования, используя новый фильтр:

 add_filter('wp_render_title_tag_filter','custom_wp_render_title_tag'); function custom_wp_render_title_tag($titletag) { $titletag = str_replace('<title>','<title itemprop="name">',$titletag); return $titletag; } 

Конечно, было бы намного чище, если бы основная функция была просто обновлена ​​до:

 function _wp_render_title_tag() { if ( ! current_theme_supports( 'title-tag' ) ) { return; } echo apply_filters( 'wp_render_title_tag' , '<title>' . wp_get_document_title() . '</title>' . "\n" ); } 

К сожалению, повторение <title> в настоящее время жестко привязано в general-template.php (строка 1062). Это частная функция, что означает, что вы не можете изменять или отменять ее. Таким образом, на данный момент вы не можете изменить тег. Возможно, вы захотите выпустить trac, чтобы попросить, чтобы они поддерживали это в будущем.