Извлечение текущих данных поста/страницы в header.php
Я хочу добавить некоторые данные о публикации/странице (имя автора, идентификатор публикации, время публикации и т. Д.) В header.php для использования в мета-тегах. У меня возникли проблемы с поиском наиболее эффективного способа сделать это. Насколько я понимаю, мне нужно будет создать цикл внутри header.php чтобы извлечь эти данные. Как я могу создать цикл для текущей страницы/публикации, если я еще не знаю идентификатор?
3 answers
Основной запрос фактически обрабатывается до загрузки шаблона, поэтому данные доступны в заголовке (если он немного менее удобен в использовании).
На самом деле вам не нужен цикл, get_the_ID()
должен дать вам идентификатор запрашиваемого объекта и большинство тегов шаблонов имеют версию, которая вернет вам результаты для этого конкретного идентификатора.
Цикл работал бы так же хорошо, но не очень часто его запускают так рано.
Вы, очевидно, знаете идентификатор текущей страницы/публикации. Поскольку загружается любой файл шаблона, запрос выполняется для извлечения данных поста, страницы, термина или любой другой вещи.
Чтобы добавить информацию в тег, вы должны использовать wp_head
крюк. Ниже приведен пример -
add_action('wp_head', 'wpse_wp_head');
function wpse_wp_head(){
// first make sure this is a single post/page
if( !is_page() || !is_single() )
return;
// then get the post data
$post = get_post();
echo '<meta name="post_id" value="'. $post->ID .'" />';
$author = get_user_option('display_name', $post->post_author );
echo '<meta name="author" value="'. esc_attr( $author ) .'" />';
}
Вот как мне удалось получить мета-тег для автора на header.php
:
<?php
if (is_singular()) {
$post = get_post();
$autor_fn = get_the_author_meta('first_name',$post->post_author);
$autor_ln = get_the_author_meta('last_name',$post->post_author);
if (!empty($autor_fn) && !empty($autor_ln)) {
?>
<meta name="author" content="<?php echo "$autor_fn $autor_ln"; ?>">
<?php
}
}
?>