Отображать все сообщения мета-ключей и мета-значения одного и того же идентификатора сообщения в wordpress
Я пытаюсь отображать значения post meta и отправлять мета-ключи. Если нужно отображать только одно значение, я могу использовать простую функцию get_post_meta(), но теперь мне нужно опубликовать все метаданные сообщений с тем же post_id, Я попытался использовать цикл foreach, но ничего не отображается. можете ли вы проверить мои коды?
function wpt_calendar_display()
{
global $post;
$columns = array(
'date_event' => 'Date',
'name_event' => 'Event'
);
register_column_headers('list-header_events', $columns);
$event_name = get_post_meta( $post->ID, '_event_name' );
// $event_date = get_post_meta( $post->ID, '_event_date', false );
$return .= "<table class=\"widefat\">";
$return .= "<tr>";
$return .= print_column_headers('list-header_events');
$return .= "</tr>";
$return .= "<tr>";
if (!empty($event_name))
foreach($event_name as $e_name)
{
$return .= "<td>";
$return .= $e_name;
$return .="</td>";
}
$return .= "<td>";
$return .= "</td>";
$return .= "</tr>";
$return .= "</table>";
return $return;
}
Ответы
Ответ 1
Использование по умолчанию
Получить мета для всех ключей:
<?php $meta = get_post_meta($post_id); ?>
Получить мета для одного ключа:
<?php $key_1_values = get_post_meta( 76, 'key_1' ); ?>
например:
$myvals = get_post_meta($post_id);
foreach($myvals as $key=>$val)
{
echo $key . ' : ' . $val[0] . '<br/>';
}
Примечание: появятся некоторые нежелательные мета ключи, начинающиеся с "underscore (_)", поэтому вам необходимо отфильтровать их.
Для справки: Смотрите Codex
Ответ 2
Я использую его в виде мета-поля. Вот функция, которая выдает значения всех метаданных для сообщения.
function dump_all_meta(){
echo "<h3>All Post Meta</h3>";
// Get all the data.
$getPostCustom=get_post_custom();
foreach( $getPostCustom as $name=>$value ) {
echo "<strong>".$name."</strong>"." => ";
foreach($getPostCustom as $name=>$value) {
echo "<strong>".$name."</strong>"." => ";
foreach($value as $nameAr=>$valueAr) {
echo "<br /> ";
echo $nameAr." => ";
echo var_dump($valueAr);
}
echo "<br /><br />";
}
} // Callback funtion ended.
Надеюсь, это поможет. Вы можете использовать его в мета-окне или в интерфейсе.
Ответ 3
$myvals = get_post_meta( get_the_ID());
foreach($myvals as $key=>$val){foreach($val as $vals){if ($key=='Youtube'){echo $vals };};};
Ключ = Youtube видео все мета-ключи для видеороликов youtube и значение
Ответ 4
WordPress имеет функцию get_metadata, чтобы получить всю мета объекта (сообщение, термин, пользователь...)
Просто используйте
get_metadata( 'post', 15 );