Если метаданные появляются при редактировании сообщений такого типа, то да, они должны быть успешно сохранены в БД.
Есть две функции wp для извлечения метаданных пользовательского типа записи: get_post_custom_values
и get_post_meta
.Разница в том, что get_post_custom_values
может обращаться к неуникальным настраиваемым полям, то есть к тем, у которых более одного значения связано с одним ключом.Вы можете также использовать его для уникальных полей - вопрос вкуса.
Предполагая, что ваш тип сообщения называется "некролог":
// First lets set some arguments for the query:
// Optionally, those could of course go directly into the query,
// especially, if you have no others but post type.
$args = array(
'post_type' => 'obituary',
'posts_per_page' => 5
// Several more arguments could go here. Last one without a comma.
);
// Query the posts:
$obituary_query = new WP_Query($args);
// Loop through the obituaries:
while ($obituary_query->have_posts()) : $obituary_query->the_post();
// Echo some markup
echo '<p>';
// As with regular posts, you can use all normal display functions, such as
the_title();
// Within the loop, you can access custom fields like so:
echo get_post_meta($post->ID, 'birth_date', true);
// Or like so:
$birth_date = get_post_custom_values('birth_date');
echo $birth_date[0];
echo '</p>'; // Markup closing tags.
endwhile;
// Reset Post Data
wp_reset_postdata();
Слово предостережения, чтобы избежатьпутаница: оставляя логическое значение в get_post_meta
, он вернет массив, а не строку.get_post_custom_values
всегда возвращает массив, поэтому в приведенном выше примере мы повторяем $birth_date[0]
, а не $birth_date
.
Также на данный момент я не уверен на 100%,будет ли $post->ID
работать так, как ожидалось выше.Если нет, замените его на get_the_ID()
.Оба должны работать, один будет точно.Можно проверить это, но сэкономить время ...
Ради полноты, проверьте кодекс на WP_Query
, чтобы узнать больше аргументов запроса и правильное использование.