Как отобразить значение пользовательских полей на странице

17

У меня есть пользовательский тип записи, называемый «программное обеспечение», в котором содержатся различные настраиваемые поля, такие как субтитры, цена, снимки экрана, ссылка на скачивание и т. Д. Я создал функцию, позволяющую использовать окно редактирования tinyMCE для некоторых из этих настраиваемых полей. Я пытался отобразить эти поля на странице, но безуспешно.

Метод, который я использую, таков:

<h1><?php the_title();?></h1>
<h3><?php echo get_post_meta(get_the_ID(), 'subtitle', TRUE); ?></h3>

Вот ссылка на страницу.

Ниже <hr/>на странице находится список всех созданных мета. Единственное из полей, которое будет отображаться, это «цена» по какой-то странной причине.

Кто-нибудь есть идеи, что я скучаю?

dvmac01
источник
это действительно get_post_meta()функция, и если вы вызываете ее внутри цикла, она должна работать ... Если только вы не используете правильное имя настраиваемого поля. Они часто поставляются с префиксом, если они реализованы через плагин, такой как метабокс. Можете ли вы опубликовать код, как вы объявляете свои пользовательские поля? Решением было бы открыть таблицу wp_postmeta в PhpMyAdmin, найти в столбце meta_keyLIKE% ...% и указать «subtitle» в качестве значения meta_key. Вы точно увидите, под каким именем Wordpress хранит ваше настраиваемое поле.
пиксель
Я знаю, что это старый, но я использую этот sql, чтобы получить список всех мета-полей в phpmyadmin: SELECT m.meta_key ОТ wp_postmeta m GROUP BY m.meta_key
ssaltman

Ответы:

17

Ну, вы используете:

get_post_meta(get_the_ID(), 'subtitle', TRUE);

Итак, вы говорите Wordpress, чтобы получить мета-значение поля 'subtitle' и вернуть возвращаемое значение в формате строки. Смотрите документ get_post_meta () .

Чтобы получить все метаданные поста, вы должны использовать функцию get_post_custom () . Например, если вы находитесь внутри цикла:

$custom = get_post_custom();
foreach($custom as $key => $value) {
     echo $key.': '.$value.'<br />';
}

Это вернет все метаданные поста. Если вы хотите проверить, например, метаполе «цена»:

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
}
cybmeta
источник
Последний кодовый блок отсутствует a)
карбид20
1
похоже, что $custom['price']возвращает массив, так что вам, возможно, придется сделать$custom['price'][0]
wal
3

используйте этот код для решения вашей проблемы.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
премальный шарма
источник