Get post meta


Я создал настраиваемый тип сообщения и соответствующий мета-ящик для сайта, который я разрабатываю. Поскольку есть несколько записей для похожих «продуктов», некот.


433; от друга.

Я хотел бы знать, есть ли способ вызвать тип сообщения по имени, а также включить переменную в конец имени post_meta, чтобы больше не было необходимости перечислять их все, кроме одного, чтобы покрыть мои базы.


  • Как сохранить динамически генерируемое значение в типе post?
  • Попытка написать shortcode с get_post_meta, но не работает
  • функция undesrtanding get_post_meta
  • динамически генерирующий синтаксис плагина
  • Как архивировать собственные мета значения из всех сообщений на одной странице
  • Отправка почты работает неправильно

Вот что я имею в виду: trmet_tour_status_a , trmet_tour_status_b , trmet_tour_status_c и т. Д. – это все настраиваемые поля, которые мне нужно отображать, если они существуют (их как минимум семь). Есть ли способ, которым я могу ис.


аписать код один раз?

 <ul id="dateList"> <?php $dates_a = get_post_meta($post->ID, 'trmet_tourdate_a', true); ?> <?php if ( ! empty ( $dates_a ) ) { // if it exists, show... ?> <li> <div class="tourDate"><?php echo $dates_a; ?></div> <a href="<?php echo get_post_meta($post->ID, 'trmet_toururl_a', true); ?>" target="_blank" class="<?php echo get_post_meta($post->ID, 'trmet_tour_status_a', true); ?>"></a> </li> <?php } ?> 

В этом коде мне нужно его прочитать, чтобы он также _d


, _c , _d и весь путь до j.

Solutions Collecting From Web of «get_post_meta с переменной»

www.wordpressask.com

badlywired.com

Создание и использование произвольных полей WordPress


Для того чтобы создать произвольное поле для страницы или поста, переходим в Административную панель WordPress и открываем на редактирование нужную нам страницу. Далее ищем блок «Произвольные поля».

Блок произвольных полей WordPress

Если данного блока на странице редактирования записи вы не нашли, то скорее всего он скрыт. Чтобы включить его отображение, переходим в правый верхний угол экрана и жмем по кнопке «Настройка экрана».

Включение блока произвольных полей WordPress

В выпадающем окне отмечаем чекбокс «Произвольные поля» и приступаем к созданию нового произвольного поля. Для этого заполняем поля «Имя» (латиницей) и «Значение», после чего жмем на кнопку «Добавить произвольное поле».

Создание нового произвольного поля WordPress


После этого можем переходить к выводу данных. Для вывода значений используйте следующий код, который нужно добавить в шаблон сайта WordPress.

Сразу хочу заметить, что функция get_post_meta() может быть использована за пределами цикла WordPress. Таким образом, вы можете использовать ее в любом месте шаблона.

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

Теперь давайте рассмотрим процесс создания блока произвольных полей для статических страниц и постов WordPress. В качестве примера мы добавим произвольные Title, Description и Keywords, а также мета-тег Robots.. Данный код нужно будет добавить в файл functions.php вашей темы оформления WordPress.

Как видите, код хорошо прокомментирован, поэтому любой желающий без труда сможет подогнать его под себя, изменив существующие поля или добавив новые. Для этого будет достаточно даже базовых знаний HTML и PHP.

Чтобы вывести содержимое созданных произвольных полей, необходимо в нужном месте шаблона добавить следующий код:

Для вывода заголовка страницы (Title)

Для вывода описания (Description)

Для вывода ключевых слов (Keywords)


Для вывода мета-тега robots

Естественно, чтобы избежать ошибок, мы можем немного усложнить код, добавив в него несколько проверок. Как вариант, можете использовать следующий код, который нужно будет добавить в файл header.php вашей темы оформления между тегами head. При этом старый код, отвечающий за вывод соответствующих данных, вам нужно будет удалить.

Вышеприведенный код позволит вывести содержимое произвольных полей WordPress только в том случае, если соответствующие поля существуют и содержат данные. В противном случае будет использоваться стандартные функции WordPress. Это позволит избежать ошибок в коде и ситуаций, когда данные не выводятся, например, при пустом значении произвольного поля.

dmitriydenisov.com

Ok, maybe I’m the last on to arrive at the party on this, but I somehow never realized that you can get any post_meta field by using its key as a property of a WP_Post object. Pretty useful. It means that if you have a WP_Post object, and the post it represents has a meta_key called “josh,” you don’t need to use get_post_meta(), you can use  $post->josh.

Here are some examples:

How does it work? It works thanks to the way the __get() magic method is used in the WP_Post class. If a class has this magic method, it will run anytime a property that doesn’t actually exist is called. In WP_Post it is used for a few fields that are not in the post table, and therefore are not retrieved by the main query for the post.


As always, taking a look at the source, and then trying it out, is the best way to learn. Here is the __get() from WP_Post, copied from the source for your convenience:

Why am I thinking about this? In Caldera Forms we have the ability to auto-populate select fields from a specific post type, or taxonomy. I’m working on adding an autocomplete/ select2 field type that will be able to use this auto-population option.

As a result, I’m looking at how to make them more useful and flexible. My first step is adding filters for what fields of the WP_Post object, or the stdClass object for a taxonomy term is used for the option’s value and label. If you look at this commit, where I added those fields, you can see how much more flexible it is for posts, then for terms.

Why? Because of the WP_Post’s magic __get() you can use this filter to use meta_fields, or even the post’s category as the option label or value. Since get_terms() returns a stdClass object, not a specific WordPress object, with this kind of flexibility in mind, no such luck there. Those using these filters will be limited to using regular taxonomy term fields.

Use It In Your Own Classes

Studying how the __get() is used in WP_Post shows you a fun way to use a WP_Post object. But it also, should give you ideas on how to use it in your own work.

What’s cool about __get() is that it only runs when needed. In WP_Post, the basic post fields are queried for every time. But the extra fields available through the __get() method, which are not just limited to meta fields are only queried for when asked for specifically. It’s smart class architecture that we can all learn from when writing classes for doing specific queries or API calls that in some, but not all cases, you might need additional data.

joshpress.net

Функции WordPress для работы с произвольными полями

  • the_meta() — извлекает для текущей записи метаданные (которые хранятся в БД в таблице wp_postmeta) в виде ненумерованного списка. Используется внутри цикла или в файле темы single.php.
    !!! Игнорируются meta_keys (имена полей), которые начинаются с символа подчеркивания.
  • get_post_meta($post_id, $key, $single) — для записи с заданным $post_id (для текущей записи  $post->ID)
    если $single = false (по умолчанию) извлекает массив всех значений для заданного ключа $key
    если $single = true, извлекает первое значение
  • get_post_custom_values($key, $post_id) — массив  всех значений для заданного ключа $key для записи с заданным $post_id  (по умолчанию для текущей записи)
     $mykey_values = get_post_custom_values('my_key');  foreach ( $mykey_values as $key => $value ) {  echo "$key => $value ('my_key')<br />";  }
  • get_post_custom() — многомерный массив — все значения для всех ключей записи
    <?php  // Извлечение значений для записи с id=72  // для ключа my_custom_field:  $custom_fields = get_post_custom(72);  $my_custom_field = $custom_fields['my_custom_field'];  foreach ( $my_custom_field as $key => $value )  echo $key . " => " . $value . "<br />";  ?>
  • get_post_custom_keys($post_id)массив всех ключей для записи с заданным $post_id  (по умолчанию для текущей записи)
  • add_post_meta($post_id, $meta_key, $meta_value, $unique) — добавляет поле с ключом $meta_key и значением $meta_value (массив сериализуется в строку) для записи любого типа (записи , страницы, произвольного типа) с заданным $post_id.
    По умолчанию $unique = false. Если $unique = true, поле с именем (ключом) $meta_key будет добавлено, только если для данного $post_id оно еще не задано.
  • update_post_meta($post_id, $meta_key, $meta_value, $prev_value) — задает для записи с $post_id (обязательный параметр) для поля $meta_key значение  $meta_value.
    Если  для $meta_key есть несколько значений (несколько полей), изменяются все значения или только первое значение $prev_value (если задан параметр $prev_value) .
    Если поля с ключом $meta_key нет, вызывается add_post_meta, и это поле создается.
  • delete_post_meta($post_id, $meta_key, $meta_value) — удаляет все значения с заданным ключом или ключ и значение $meta_value (необязательный параметр).

Примеры

1. Первое значение для ключа key_1 для записи 76:

<?php $key_1_value = get_post_meta(76, 'key_1', true); ?>

2. Внутри цикла WordPress  вывод изображения (url  изображения хранится в произвольном поле «thumb»).

<?php if ( get_post_meta($post->ID, 'thumb', true) ) : ?>  <a href="<?php the_permalink() ?>" rel="bookmark">  <img src="<?php echo get_post_meta($post->ID, 'thumb', true) ?>" alt="<?php the_title(); ?>" />  </a> <?php endif; ?>

3. Изменение шаблона страницы

<?php update_post_meta($id, "_wp_page_template", "new_template.php"); ?>

mblogm.ru

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 в том же посте.

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

После добавления вышеуказанных строк кода, получаем отображение нашего 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%.
Для этого пишем следующий код:

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

 

Еще несколько полезных функций, связанных с пользовательскими полями
Ниже приведены еще кое-какие полезные функции, которые вы можете использовать относительно к 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, как показано ниже:

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

variable.pp.ua

function swp_buffer_button_html($array)  {   // If we've already generated this button, just use our existing html   if (isset($_GLOBALS['sw']['buttons'][$array['postID']]['buffer'])) {   $array['resource']['buffer'] = $_GLOBALS['sw']['buttons'][$array['postID']]['buffer'];   // If not, let's check if Buffer is activated and create the button HTML   } elseif (isset($array['options']['newOrderOfIcons']['buffer']) && !isset($array['buttons']) || isset($array['buttons']) && isset($array['buttons']['buffer'])) {   // Collect the Title   $title = get_post_meta($array['postID'], 'nc_ogTitle', true);   if (!$title) {   $title = get_the_title();   }   $array['totes'] += $array['shares']['buffer'];   ++$array['count'];   $array['resource']['buffer'] = '<div class="nc_tweetContainer swp_buffer" data-id="' . $array['count'] . '" data-network="buffer">';   $link = urlencode(urldecode(swp_process_url($array['url'], 'buffer', $array['postID'])));   $array['resource']['buffer'] .= '<a target="_blank" href="http://bufferapp.com/add?url=' . $link . '&text=' . urlencode(html_entity_decode($title, ENT_COMPAT, 'UTF-8')) . '" data-link="http://bufferapp.com/add?url=' . $link . '&text=' . urlencode(html_entity_decode($title, ENT_COMPAT, 'UTF-8')) . '" class="nc_tweet buffer_link">';   if ($array['options']['totesEach'] && $array['shares']['totes'] >= $array['options']['minTotes'] && $array['shares']['buffer'] > 0) {   $array['resource']['buffer'] .= '<span class="iconFiller">';   $array['resource']['buffer'] .= '<span class="spaceManWilly">';   $array['resource']['buffer'] .= '<i class="sw sw-buffer"></i>';   $array['resource']['buffer'] .= '<span class="swp_share"> ' . __('Buffer', 'social-warfare') . '</span>';   $array['resource']['buffer'] .= '</span></span>';   $array['resource']['buffer'] .= '<span class="swp_count">' . swp_kilomega($array['shares']['buffer']) . '</span>';   } else {   $array['resource']['buffer'] .= '<span class="swp_count swp_hide"><span class="iconFiller"><span class="spaceManWilly"><i class="sw sw-buffer"></i><span class="swp_share"> ' . __('Buffer', 'social-warfare') . '</span></span></span></span>';   }   $array['resource']['buffer'] .= '</a>';   $array['resource']['buffer'] .= '</div>';   // Store these buttons so that we don't have to generate them for each set   $_GLOBALS['sw']['buttons'][$array['postID']]['buffer'] = $array['resource']['buffer'];   }   return $array;  }

hotexamples.com

get_post_meta()

Metadata is handled through the usage of key-value pairs. You can store the name of the metadata in the key part of this pair, and store the information which will appear in the metadata list of the post with which it’s related in value.

To get a post’s metadata we use the WordPress function get_post_meta. It’s syntax goes like below:

 get_post_meta ( int $post_id, string $key = '', bool $single = false ) 

As you see, this function takes three arguments. The first one is $post_id, which is what you will identify the post whose metadata you are looking for with. This parameter is obligatory and must be an integer.

Next up is $key, which is an optional parameter of the format string that represents the meta key to be retrieved. If you don’t specify this, it will return data for all the keys by default. The last parameter is $single, a boolean value that shows whether a single value is to be returned or not. This parameter is also optional. By default it will take the value FALSE.

Current post’s meta

You can use this function to perform a number of actions on the metadata of the current post, such as, but not limited to, getting the meta for all the keys, for a single key, or even getting the first value of the a key. Take a look at the code below:

 <?php $meta = get_post_meta( get_the_ID() ); ?>  <?php $key_1_value = get_post_meta( get_the_ID(), 'key_1' ); ?>  <?php $key_1_value = get_post_meta( get_the_ID(), 'key_1', true ); ?> 

The first line of code is how we get the meta for all the keys, which is getting the id of a specific post, and not specifying either of the two optional parameters.

Not very differently we get the meta for a single key, only this time we specify the key and leave the rest as it is.

If we only want the first value for this key we specified, we set the last parameter to TRUE and all is well. Easy, right?

Custom Fields Meta

What is done differently if you have added custom fields to your post? Let’s take the example where we have to get a thumbnail’s URL, which is stored in the custom field named thumbnailurl. The code would go like below:

 <?php if ( get_post_meta( get_the_ID(), 'thumbnailurl', true ) ) : ?>  <a href="<?php the_permalink() ?>" rel="bookmark">  <img class="thumbnailurl"   src="<?php echo esc_url( get_post_meta( get_the_ID(), 'thumbnailurl', true ) ); ?>"   alt=" <?php the_title_attribute(); ?>" />  </a> <?php endif; ?> 

get_post_meta() hacks

No meta field is found

In case you are searching for a given $key in a specific post, and that is not found, then you can get a return value in two forms, depending on what the set value of the parameter $single is. If this parameter is set to FALSE then you will get an empty array, otherwise, you will be given an empty string.

While both may be equally disheartening, the way the return value is presented to you may change how you approach the rest of your code. However, you can add the two lines of code below and keep working the same regardless:

 if( ! get_post_meta( '1', 'non-existing_meta', true ) ) {} if( ! get_post_meta( '1', 'non-existing_meta', false ) ) {} 

Both lines will be run in case we don’t find metadata for a given post.

Meta value is an empty string

If by chance you have stored an empty string into your meta value, then you wouldn’t be able to retrieve this by using get_post_meta. Instead you can get the correct answer by using get_post_custom_keys(). You can do this like below:

 if( ! in_array( 'given_key', get_post_custom_keys( '1' ) ) ) {} 

This function would correctly find out if the meta has a value that translates to false, such as empty strings or FALSE as a boolean value.

get_metadata()

If you want to get the metadata of a certain object this time, and not a post, then the function you must use is get_metadata(). It’s syntax goes like below:

 get_metadata($meta_type, $object_id, $meta_key, $single) 

Two of this functions’ parameters are obligatory, that being $meta_type and $object_id. The first one is the type of object the metadata is for, therefore it’s format is a string. The other one shows the ID of this object, making it to be an integer.

The other two optional parameters are $meta_key, which shows the $key of the required metadata and retrieves metadata for all keys if left unspecified, and $single which is a boolean value that when set to true return only the first value for the specified metadata.

Download the source code

This was an example of get_post_meta() in WordPress.

Download the source code for this tutorial:

www.webcodegeeks.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.