Снова ищем одного-двух вордпрессеров в нашу команду!

get_post_meta() — получает значение произвольного поля поста

Функция, позволяющая получить параметры поста (значения произвольных полей).

get_post_meta($post_id, $key = '', $single = false)
$post_id
(целое число) ID поста, значение произвольного поля которого будем получать.
$key
(строка) Ключ, название произвольного поля. Если не указано, функция вернет массив всех произвольных полей для указанного поста.
$single
(логическое) может принимать значения:

  • false — возвращает все значения произвольных полей с указанным ключом в виде массива, вот что я имею ввиду:
    таблица wp-postmeta в pHpmyadmin
  • true — возвращает самое первое значение произвольного поля с указанным ключом в виде строки;

Примеры

Вытаскиваем массив всех значений всех произвольных полей для поста с ID = 5:

$fields = get_post_meta( 5 );

Все значения произвольных полей с ключом color для того же поста:

$fields = get_post_meta( 5, 'color' );

Одно, самое первое значение произвольного поля:

$field = get_post_meta( 5, 'color', true );

Миша

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp по всему миру — официальной конфе по WordPress, иногда там выступаю. Также периодически школа Epic Skills и LoftSchool приглашают меня вести у них уроки/вебинары.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля — пишите мне.

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

  • Сергей29 сентября 2015 #

    Функция the_meta() работает и выводит все произвольные поля на странице в том месте, где я указал ее в коде. А вот get_post_meta() ничего не выводит. Указываю id поста и название поля. Все так как у Вас в статье. Какова может быть причина что данная функция ничего не выводит? 🙁

    • Миша30 сентября 2015 #
      1. Убедитесь, что ID поста, который вы указываете, существует.
      2. Зайдите на страницу редактирования этого поста в админке и убедитесь, что произвольное поле с заданным ключем имеется.
      3. Третий параметр get_post_meta() должен быть true, у вас так?
      • Сергей30 сентября 2015 #

        1 и 2 условия соблюдены. Вчера вечером решил вопрос - заработал вот такой код т.е. добавил echo, ну и true, конечно 🙂
        Спасибо за ответ.

  • Юрий9 октября 2015 #

    Когда вывожу посты через get_post_meta($post->ID,'',false) (мне нужны все поля со всеми ключами для всех постов), вордпресс выводит ключи, которые начинаются с нижнего подчёркивания вместе с их значениями (_edit_last, _edit_lock, _thumbnail_id). Подскажите, пожалуйста, как можно отменить их отображение

    • Миша11 октября 2015 #

      Юрий, попробуйте так:

      $fields = get_post_meta($post->ID,'',false);
      unset( $fields['_edit_lock'] );
      unset( $fields['_edit_last'] );
      unset( $fields['_thumbnail_id'] );
      • Юрий13 октября 2015 #

        Спасибо большое, помогли)

  • Артур1 января 2016 #
    <?php echo (get_post_meta($post->ID, 'user_submit_name', $single = true)); ?>

    Как в данном примере обернуть dКак обернуть user_submit_name в div? Но только внутри php?

    • Миша2 января 2016 #
      <?php echo '<div>' . get_post_meta($post->ID, 'user_submit_name', true) . '</div>'; ?>
      • Артур2 января 2016 #

        Большое спасибо!

  • Евгений5 декабря 2019 #

    Здравствуйте! Пожалуйста подскажите как упростить эту конструкцию

    $param1 = get_post_meta($post->ID, 'param1', true);
    $param2 = get_post_meta($post->ID, 'param2', true);
    $param3 = get_post_meta($post->ID, 'param3', true);
    $param4 = get_post_meta($post->ID, 'param4', true); 
    $param5 = get_post_meta($post->ID, 'param5', true);
    • Миша5 декабря 2019 #

      Здравствуйте,

      Легко – get_post_meta( $post->ID )

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.