Извлечение текущих данных поста/страницы в header.php


Я хочу добавить некоторые данные о публикации/странице (имя автора, идентификатор публикации, время публикации и т. Д.) В header.php для использования в мета-тегах. У меня возникли проблемы с поиском наиболее эффективного способа сделать это. Насколько я понимаю, мне нужно будет создать цикл внутри header.php чтобы извлечь эти данные. Как я могу создать цикл для текущей страницы/публикации, если я еще не знаю идентификатор?

 1
Author: Josh Mountain, 2014-02-24

3 answers

Основной запрос фактически обрабатывается до загрузки шаблона, поэтому данные доступны в заголовке (если он немного менее удобен в использовании).

На самом деле вам не нужен цикл, get_the_ID() должен дать вам идентификатор запрашиваемого объекта и большинство тегов шаблонов имеют версию, которая вернет вам результаты для этого конкретного идентификатора.

Цикл работал бы так же хорошо, но не очень часто его запускают так рано.

 2
Author: Rarst, 2014-02-24 17:25:25

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

Чтобы добавить информацию в тег, вы должны использовать 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 ) .'" />';
}
 1
Author: Shazzad, 2014-02-24 17:34:18

Вот как мне удалось получить мета-тег для автора на 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
      }
    }
  ?>
 0
Author: That Brazilian Guy, 2019-01-11 05:20:05