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

13 сент. 2013 г., 19:14:43
Просмотры: 149K
Голосов: 27

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

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

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

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

Ниже тега <hr/> на странице находится список всех созданных мета-данных. По какой-то странной причине отображается ТОЛЬКО поле 'price'.

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

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

это действительно функция get_post_meta(), и если вы вызываете её внутри цикла, она должна работать... Если только вы не используете неправильное имя произвольного поля. Они часто имеют префикс, если реализованы через плагин типа meta-box. Можете показать код, как вы объявляете свои произвольные поля? Решением будет открыть таблицу wp_postmeta в PhpMyAdmin и поискать в колонке meta_key с условием LIKE %...%, указав "subtitle" в качестве значения meta_key. Вы увидите точное имя, под которым Wordpress хранит ваше произвольное поле.

pixeline pixeline
13 сент. 2013 г. 19:37:39

Знаю, что это старый вопрос, но я использую этот SQL-запрос для получения списка всех мета-полей в phpmyadmin: SELECT m.meta_key FROM wp_postmeta m GROUP BY m.meta_key

ssaltman ssaltman
10 нояб. 2015 г. 17:31:26
Все ответы на вопрос 2
2
30

Итак, вы используете:

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 />';
}

Это вернет все метаданные записи. Если вы хотите проверить, например, метаполе "price":

if(isset($custom['price'])) {
    echo 'Цена: '.$custom['price'][0];
}
13 сент. 2013 г. 19:41:29
Комментарии

В последнем блоке кода не хватает )

Dan Hennion Dan Hennion
29 апр. 2018 г. 02:37:31

похоже, что $custom['price'] возвращает массив, поэтому вам может понадобиться использовать $custom['price'][0]

wal wal
25 июн. 2019 г. 17:41:15
0

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

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
30 июл. 2015 г. 10:15:27