WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_post_field() WP 2.3

Получает значение любого поля данных поста по переданному ID поста: post_type, post_status, post_content ...

Результат будет отфильтрован по параметру $context.

Работает на основе: sanitize_post_field()
✈ 1 раз = 0.000635с = медленно | 50000 раз = 2.23с = быстро

Хуков нет.

Возвращает

Объект WP_Error или строку. Значение поля.

Использование

get_post_field( $field, $post, $context );
$field(строка) (обязательный)
Название поля, данные которого нужно получить. Может быть названием любой колонки таблицы wp_posts.
По умолчанию: нет
$post(число)
ID поста, данные поля которого мы собрались получать. C версии 4.5. параметр стал не обязательный.
По умолчанию: null
$context(строка)

Указание, как фильтровать получаемое поле. В зависимости от того, как дальше мы будем использовать данные. Может быть:

  • raw - без какой-либо очистки.
  • edit - для дальнейшего редактирования.
  • db - для использования в запросе.
  • display - для вывода на экран.
  • attribute - для использования в атрибуте.
  • js - для использования в данных скрипта.

По умолчанию: 'display'

Примеры

#1. Получим поле post_title у поста с ID = 1 и отфильтруем его для использования в запросе к БД:

$field = get_post_field( 'post_title', 1, 'db' );
echo $field;

// получим: Заголовок поста 1

Заметки

  • Смотрите: sanitize_post_field()

Список изменений

С версии 2.3.0 Введена.
С версии 4.5.0 The $post parameter was made optional.

Код get post field: wp-includes/post.php WP 5.2.3

<?php
function get_post_field( $field, $post = null, $context = 'display' ) {
	$post = get_post( $post );

	if ( ! $post ) {
		return '';
	}

	if ( ! isset( $post->$field ) ) {
		return '';
	}

	return sanitize_post_field( $field, $post->$field, $post->ID, $context );
}

Cвязанные функции

Из раздела: Записи: посты, страницы, ...

2 коммента
  • Kristina

    Скажите, пожалуйста, как найти, где записывается значение $field(строка)? Нужно найти в SQL значение поля, которое выводит get_field() и исправить его.

    Ответить2 мес назад #
  • @ Александр

    Как вставить заданное произвольное поле "pole-1001" вместо id в "get_post_field"?
    Пробовал get_post_field( 'post_title', $id, 'db' ) не срабатывает...

    <?php 
    
    		$id = the_field('pole-1001');
    
    		$field = get_post_field( 'post_title', 1357, 'db' );
    
    echo $field;
    
    ?>
    Ответить9 дней назад #
Здравствуйте, !     Войти . Зарегистрироваться