get_post_meta()
Набуває значення довільного поля запису (поста). Дозволяє також отримати всі метаполі.
Щоб отримати значення всіх довільних полів певного посту, потрібно залишити порожнім параметр $key . Також для цього можна скористатися функцією get_post_custom() .
Якщо даних міститься серіалізований масив (serialize), він автоматично буде оброблений функцією unserialize() , тобто. щоб отримати серіалізовані дані, їх не потрібно окремо обробляти функцією unserialize() .
get_metadata()
get_header_image_tag() ,
get_the_modified_author() ,
get_attached_file() ,
get_page_template_slug() ,
wp_get_attachment_url() ,
get_post_thumbnail_id (
) ,
(повільно) | 50000 разів – 0.12 сек
(дуже швидко) |
PHP 7.4.25, WP 6.0
Хуків немає.
Повертає
Разное
.
Якщо у значенні метаполя зберігається число воно буде повернено у вигляді рядка, наприклад, "54"
…
Поверне
false
, коли неправильно передано параметр $post_id (не-numeric, 0 чи негативне значення).- При $single = true
строка/массив
коли метаполі є.''
коли метаполя немає.
- $ single = false
массив значений метаполей
коли метаполі є.array()
коли метаполя немає.
Використання
$meta_values = get_post_meta( $post_id, $key, $single );
-
$post_id
(число) (обов’язковий) - ID посту, довільні поля якого потрібно отримати.
-
$key
(рядок) -
Назву довільного поля, значення якого потрібно отримати. Якщо залишити поле порожнім, буде отримано всі довільні поля посту.
За замовчуванням: ” -
$single
(логічний) true
– поверне значення метаполя (якщо полів дещо поверне значення першого метаполя).
false
– Поверне масив всіх значень мета полів із зазначеним ключем.Якщо значення довільного поля знаходиться серіалізований масив, то значення
true
поверне, нормальний масив, і якщо вказатиfalse
, то повернеться масив, де у ключі ” [0] ” лежатиме той самий серіалізований масив.Цей параметр працює тільки якщо вказано параметр $key!
Типово: false
Приклади
#1 Перевіримо існування вказаного метаполя
Коли потрібно перевірити, чи існує поле, з будь-яким значенням: порожній рядок або 0:
$metas = get_post_meta( $post->ID ); if( isset( $metas['key_name'] ) ){ echo 'Мета поле "key_name" існує, не важливо яке там значення.'; }
#2 Підрахунок кількості всіх довільних полів усіх записів
Цей приклад показує як одним запитом вивести всі унікальні довільні поля і порахувати скільки їх використовується в БД. Такий запит може стати в нагоді для профілювання довільних полів записів:
Global $wpdb; $data = $wpdb->get_results( "SELECT meta_key, count(*) як count FROM $wpdb->postmeta WHERE meta_key NOT LIKE '_oembed%' GROUP BY meta_key" ); print_r ($ data); /* Array ( [0] => stdClass Object ( [meta_key] => _edit_lock [count] => 2300 ) [1] => stdClass Object ( [meta_key] => _edit_last [count] => 2123 ) ... ) */
#3 Приклад використання get_post_meta() всередині циклу WordPress.
Приклад нижче показує, як використовувати функцію для отримання значення довільного поля thumb
, у значенні якого зберігається посилання на картинку-мініатюру, для того щоб отримати це посилання і використовувати її в шаблоні.
<?php $thumb = get_post_meta($post->ID, 'thumb', true); if ($thumb) { ?> <a href="<?php the_permalink() ?>" rel="bookmark"> <img class="thumb" src="<?php echo $thumb ?>" alt="<?php the_title(); ?>" /> </a> <?php } ?>
#4 Використання функцій довільних полів на прикладі авторської функції
#5 Отримаємо масив значень довільних полів
Отримаємо значення полів посту 76, ключ яких дорівнює key_1
, мається на увазі що пост постає кілька довільних полів з ключем key_1
:
$ values = get_post_meta( 76, 'key_1' ); /* Array ( [0] => значення 1 [1] => значення 2 ) */
#6 Отримаємо всі довільні поля запису
Якщо не вказати ключ довільного поля для функції, вона отримає всі поля відразу:
$ Metas = get_post_meta (76); /* Array ( [_edit_lock] => Array ( [0] => 1517175359:1 ) [_edit_last] => Array ( [0] => 1 ) 10 views => Array ( [0] => 10164 ) [_thumbnail_id] => Array ( [0] => 9556 ) [photo] => Array ( [0] => https://wp-doc.com/wp-content/uploads/2010/03/Quicktags-API.png [1] => https://wp-doc.com/wp-content/uploads/2017/07/image.png ) ) */
#7 Отримаємо лише одне довільне поле
Щоб отримати лише перше (або єдине) значення довільного поля у вигляді рядка, використовуємо такий виклик функції:
$ value = get_post_meta (76, 'key_1', true); //> значення 1
#8 Об’єднання всіх метаполів в об’єкт
Цей приклад показує якомога зручніше об’єднати всі довільні поля запису.
Потрібно це, коли в коді передбачається використовувати багато різних полів запису. Отримувати кожне за допомогою цієї функції не зручно, зручніше отримати один раз усі поля, створити з них об’єкт і брати дані з об’єкта – це працює швидше, і коду менше, і зрозуміліше.
Мається на увазі, що ключі довільних полів не в кирилиці і біля поля з одним ключем передбачено лише одне значення – все це звичайне явище:
// Зберемо всі метаполя в об'єкт $meta $meta = new stdClass; foreach( (array) get_post_meta( $post->ID ) as $k => $v ) $meta->$k = $v[0]; // Тепер, припустимо запис є метаполі 'book' // Отримуємо його так: echo $meta->book;
WordPress має незадокументовану можливість отримувати метаполі запису так: $post->my_meta_key , де $post – об’єкт WP_Post, а my_meta_key – назва метаполя, яку потрібно отримати.
#9 Перевірка, що мета-поле існує
// для single значення $ value = get_post_meta (76, 'key_1', true); if( '' !== $value ){ // мета-поле є } // для multiple значення $ value = get_post_meta( 76, 'key_1' ); if( [] !== $value ){ // мета-поле є }
список змін
З версії 1.5.0 | Введено. |
Код get_post_meta() get post meta WP 6.0.2
function get_post_meta( $post_id, $key = '', $single = false ) { return get_metadata( 'post', $post_id, $key, $single); }