Произвольное поле за пределами цикла

Недавно столкнулся с ситуацией, когда нужно было в сайдбаре получить значение произвольного поля текущего поста. Оказалось, что стандартным способом получить его можно только в пределах цикла поста.

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

Первый вариант

  1. В файле single.php найти код начала цикла:

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    

    и сразу после него добавить такой код:

    <?php $GLOBALS['current_id'] = $post->ID; ?>
    

    В результате этого ID (идентификатор) поста станет доступным за пределами цикла (идентификатор нужен нам для считывания произвольного поля).

  2. Теперь, чтобы получить произвольное поле текущего поста за пределами цикла, необходимо использовать следующий код:

    <?php echo get_post_meta($GLOBALS['current_id'], 'customField', true); ?>
    

    Здесь customField – это имя произвольного поля.

Второй вариант

Этот вариант более простой и красивый по сравнению с первым. Достаточно вставить вот такой код в нужное место:

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'customField', true);
?>

customField – это имя произвольного поля.

(голосов: 4, средняя оценка: 5.00 из 5)
Loading ... Loading ...

Koммeнтapии (3):

  1. Спасибо. То, что нужно было. Правда, я использовала этот хак, чтобы вывести для первого поста данные, отличные от остальных постов. Но сути это не меняет :)

  2. А еще, можно вызывать все элементы шаблона, не через стандартные get_header(), а через require (’header.php’);. В таком случает весь шаблон получается, как бы цельным и все переменные становятся доступны в любом файле шаблона.

    Ну это скорее для информации. Если шаблон уже готовый, то примеры из поста конечно удобнее. :)

Oтпpaвить кoммeнтapий