Учимся работать с Post Meta полем в WordPress

Учимся работать с Post Meta полем в WordPress

post meta блок пользовательские поля wordpress
По умолчанию, WordPress дает вам возможность создавать два типа содержимого – Посты и Страницы. Посты и страницы можно заполнять контентом в виде статей, записей, заметок и т.п. с помощью визуального редактора в админ-панели WordPress. Этот контент будет отображаться на сайте в виде, заданном темой вашего шаблона. Но используя WordPress для разных типов сайтов, а значит и для разного вида контента, может появиться необходимость привязывать к постам больше информации (дополнительных полей), которая будет идти дополнительно к тексту, и от заголовку поста. Для этого в WordPress существует такая фича, как поле Post meta, известная также как «пользовательские поля», которая как раз и позволяет нам прикреплять дополнительное содержимое к постам. При чем содержимое это может быть чем угодно, в зависимости от типа создаваемого вами сайта. Более того, количество Post meta, которые можно привязать к постам, практически не ограничено.
Итак, в этой статье мы поговорим как раз о том, как можно добавить, отобразить и вообще использовать post meta на своем вордпрессном сайте.
Добавление Post meta из админки WordPress
Рost meta к постам достаточно легко можно прикрепить из админ-панели WordPress, а именно на странице редактирования поста. В том случае, если вы не видите функции post meta (метаблок «пользовательское поле») на странице редактирования постов, её можно включить через настройки экрана, как показано ниже.

Учимся работать с Post Meta полем в WordPress

После такой манипуляции пользовательское поля должно появиться под визуальным редактором поста вот в таком виде:

Учимся работать с Post Meta полем в WordPress

Здесь в выпадающем списке вы увидите все post metа поля, которые ранее прикрепляли к другим постам. Если вы хотите связать с постом одно из ранее созданных полей – просто выберите название нужного вам поля из выпадающего списка. Если же хотите создать новое поле, кликните «Ввести новое» под выпадающим списком и введите желаемое название и значение в соответствующих блоках. Далее кликните «Добавить пользовательское поле» (смотрите скрин ниже).

Учимся работать с Post Meta полем в WordPress

Созданное поле будет связано с постом как только вы сохраните или опубликуете последний.
Использование post meta в вашей теме
Прикрепив роst meta к посту, у вас  может возникнуть необходимость отобразить его с этим постом на вашем сайте. WordPress  предоставляет своим пользователям такую возможность благодаря функции «get_post_meta». Для исполнения функции get_post_meta необходимо задать ряд параметров:

  1. ID поста, поле которого вы хотите отобразить;
  2. Название поля, которое вы хотите отобразить с данным постом;
  3. Булен – по пути «true» значение выбранного post meta отобразится в виде строки, а по пути «false»  – в виде массива, что весьма полезно, когда имеется несколько значений того же post meta в том же посте.
Читайте также  Программа для постинга в блог wordpress

То есть, если, например, вы хотите отобразить в своем посте post meta под названием «Цена», который мы только что создали, вам необходимо добавить следующие строки в код своей темы (куда — зависит от того, в каком именно месте вам нужно показать значение данного post meta):

$price = get_post_meta(get_the_ID(), 'Price', true);
echo 'Cost of the item : '.$price;

После добавления вышеуказанных строк кода, получаем отображение нашего post meta в цикле вот в таком виде:

Учимся работать с Post Meta полем в WordPress

Добавление post_meta через PHP код
Как вам уже известно, рost meta могут быть обновлены или добавлены через админ-панель WordPress. Но может быть, вы хотите, чтобы это можно было сделать программно?  Если да, то WordPress как раз дает вам такую возможность, благодаря функции под названием «update_post_meta».
Функция «update_post_meta» использует четыре параметра:

  1. ID поста;
  2. Название необходимого post meta;
  3. Значение этого же post meta;
  4. Дополнительный параметр: предыдущее значение, которое вы хотите обновить.

Функция update_post_meta будет называться «add_post_meta», если используемый для обновления post meta не был создан заранее.
Теперь рассмотрим все это на небольшом примере. Мы сделаем так, что к постам (когда бы они ни были сохранены) в которых post meta под названием «Цена» имеет значение более 400$ будет добавляться скидка, например, в 15%.
Для этого пишем следующий код:

add_action( 'save_post', 'add_discount_meta' );

function add_discount_meta( $post_id )
{

        $price = get_post_meta($post_id, 'Price', true);
        if(strlen($price) > )
        {
            $discount = '0%';
            if(intval(str_replace("$","",$price)) > 400 )
               $discount = '15%';

             update_post_meta( $post_id, 'Discount', $discount );
        }

}

К данной функции мы прикрепили save_post, которая вызывается независимо от того, когда был сохранен пост.  Итак, согласно приведенному коду, анализируется значение post meta «Цена». Если оно больше 400$, вызывается функция update_post_meta, которая обновляет значение со скидкой. То есть теперь, если мы добавим пост с «Ценой» более 400$ к нему будет автоматически добавляться скидка в 15%, как показано ниже:

Читайте также  Подсчет постов в категориях меню Wordpress

 

Учимся работать с Post Meta полем в WordPress

Учимся работать с Post Meta полем в WordPress

Еще несколько полезных функций, связанных с пользовательскими полями
Ниже приведены еще кое-какие полезные функции, которые вы можете использовать относительно к post meta.

  • get_post_custom_keys – эта функция берет ID поста и отображает массивом все post meta поля, связанные с этим постом.
  • get_post_custom_values – эта функция используется для того, чтобы получить все значения для конкретного поста. Это полезно только тогда, когда пользовательское поле имеет не уникальные значения.
  • get_post_custom – эта функция использует  ID поста как входные данные и возвращает массив с всеми названиями post meta и их значениями в конкретном посте.
  • delete_post_meta –  в этой функции задается ID поста и имя post meta, которые вы хотите удалить.

Post meta в пользовательских типах записи
Мы уже успели убедиться в том, что post meta – довольно таки полезная фича. Она также может быть скомбинирована с функцией WordPress-а под названием пользовательский тип записи, что в результате, дает возможность создавать широкий спектр различных сайтов на WordPress.
Чтобы связать post meta и custom post type, необходимо добавить несколько пользовательских полей к дополнительным параметрам функции register_post_type, как показано ниже:

register_post_type( 'Mobiles',
        array(
            'labels' => array(
                'name' => __( 'Mobiles' ),
                'singular_name' => __( 'Mobile' )
            ),
        'public' => true,
        'has_archive' => true,
        'supports' => array(
        'title',
        'editor',
        'custom-fields',
        )
        )
    );

Подытожим
WordPress всегда была очень гибкой системой, которая используется для создания не только банальных блогов, но и намного более сложных сайтов. Благодаря функциям типа post meta, WordPress  значительно расширяет площадку для постройки сайтов: от обычного списка продукции до профессионального портфолио.
Спектр возможностей пользовательских полей в WordPress расширяется также и за счет дополнительных функций к ней, которые, в отличии от множества других, довольно простые в использовании, хотя и имеют сложнейшую подоплеку. Так что, желаю вам приучиться и  с удовольствием использовать эти знания при построении своих будущих сайтов.

Как вывести первое изображение из записи... Вывод непосредственно первого изображения, если его нет то «заглушку» из списка. Для этого нужно в functions.php дописать: function first_image() { ...
Программа для постинга в блог wordpress... Редактор блогов Windows Live (англ. Windows Live Writer) — приложение из пакета основных компонентов Windows, разрабатываемого корпорацией Microsoft, ...
Счетчик просмотров записи по ip адресу в WordPress... Для записи количества просмотров надо в файл functions.php в папке вашего шаблона добавить функцию приведенную ниже: function setPostViews($postID) {...
Чистим head в WordPress И убираем лишнее и ненужно... Для начала уберем код который дописывает движок wordpress. Из написанного в каждой строке более менее понятно что уберется, но если что-то не ясно — c...

Сохрани, чтобы не потерять