WordPress: произвольное поле за пределами цикла
Недавно столкнулся с ситуацией, когда нужно было в сайдбаре получить значение произвольного поля текущего поста. Оказалось, что стандартным способом получить его можно только в пределах цикла поста.
Для того же, чтобы вывести произвольное поле за пределами цикла текущего поста, необходимо воспользоваться одним из следующих вариантов.
Первый вариант
- В файле
single.php
найти код начала цикла:<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
и сразу после него добавить такой код:
<?php $GLOBALS['current_id'] = $post->ID; ?>
В результате этого ID (идентификатор) поста станет доступным за пределами цикла (идентификатор нужен нам для считывания произвольного поля).
- Теперь, чтобы получить произвольное поле текущего поста за пределами цикла, необходимо использовать следующий код:
<?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
– это имя произвольного поля.