Как получить и отобразить данные meta box на странице

5 мар. 2013 г., 12:43:52
Просмотры: 36K
Голосов: 3

Я пытаюсь создать Meta Box с 3 полями текстового редактора для произвольного типа записи.

Meta Box отображается и, похоже, сохраняет данные для записей произвольного типа, но я не могу получить эти данные для отображения на странице single-[custom-post-type].php.

Недавно я попробовал следующий код для отображения данных Meta Box на странице:

global $post;
$meta = get_post_meta($post->ID, 'my-info', true ); 
if ($meta != '') {
    echo $meta
} else { 
    echo "Невозможно отобразить содержимое";
}

Я не уверен, связана ли проблема с созданием/сохранением Meta Box, из-за чего я не могу отобразить данные. Буду признателен, если кто-нибудь укажет мне правильное направление.

Вот ссылка на код, который я использую для своего Meta Box, если это поможет:

Код Meta Box

1
Комментарии

Есть какие-то успехи по этому вопросу?

kaiser kaiser
22 окт. 2013 г. 13:30:19
Все ответы на вопрос 4
0

Для отображения метаданных типа записи на шаблоне отдельной страницы, предполагается, что вы находитесь в цикле (Loop).

// Используйте get_the_ID() для получения ID через API-функцию
echo get_post_meta( get_the_ID(), 'my-info', true );
// Также можно вызвать его из глобальной переменной, так как запрос относится к текущей отдельной странице
echo get_post_meta( $GLOBALS['post']->ID, 'my-info', true );

Если вы не получаете никакого вывода, возможно, стоит проверить полный набор пользовательских данных записи:

printf( '<pre>%s</pre>', var_export( get_post_custom( get_the_ID() ), true ) );
5 мар. 2013 г. 12:57:26
0

Используйте идентификаторы полей для получения метаданных соответствующих полей, как показано в следующем коде.

global $post;
$meta = get_post_meta($post->ID,'myinfo-box1', true); // Используйте myinfo-box1, myinfo-box2, myinfo-box3 для соответствующих полей
if ($meta != '') {
    echo $meta;
} else { 
    echo "Невозможно отобразить содержимое";
} 
5 мар. 2013 г. 13:08:17
1
// Получаем значение мета-поля 'images_url' для текущего поста
$m_meta_description = get_post_meta($post->ID, 'images_url', true);

// Выводим значение мета-поля с префиксом
echo 'Значение метабокса: ' . $m_meta_description;
24 янв. 2018 г. 07:20:02
Комментарии

Можете объяснить, почему это решит проблему?

Krzysiek Dróżdż Krzysiek Dróżdż
5 дек. 2018 г. 09:48:43
1
-2

Иногда атрибут id не работает, тогда можно использовать атрибут name.

Для вывода значений метабокса ваш код должен находиться внутри цикла.

$meta = get_post_meta($post->ID,'meta-box-text', true);

Здесь meta-box-text - это атрибут name моего текстового поля.

У меня это работает идеально.

16 июн. 2018 г. 08:24:10
Комментарии

Почему? Почему вы считаете, что это должно быть внутри цикла? Первый параметр этой функции - post_id, поэтому вы МОЖЕТЕ использовать ее где угодно, не только в цикле. Извините, но ваш ответ просто неверен.

Krzysiek Dróżdż Krzysiek Dróżdż
16 июн. 2018 г. 11:31:24