Функция get_post_field() достаёт значение любого поля записи по её ID. Это может быть post_type, post_status, post_content и вообще любой столбец из таблицы wp_posts. Перед выдачей значение прогоняется через sanitize_post_field() с учётом выбранного контекста, так что данные приходят уже отфильтрованными под конкретную задачу.
Что возвращает
В зависимости от запрошенного поля это может быть число, строка, массив, объект или значение поля. Если запись не найдена либо поля не существует, функция вернёт пустую строку.
Параметры
$field (строка, обязательный) — имя поля, которое нужно получить. Совпадает с названием столбца в таблице wp_posts.
$post (число, необязательный) — ID записи. Стал необязательным начиная с версии 4.5. По умолчанию null.
$context (строка, необязательный) — способ фильтрации значения. Доступные варианты: raw, edit, db, display, attribute и js. По умолчанию display.
Как функция устроена внутри
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 );
}
Логика простая: сначала функция получает объект записи через get_post(), затем проверяет, что запись и нужное поле существуют, и только потом возвращает очищенное значение.
Пример использования
Получаем заголовок записи с ID 1, отфильтрованный для использования в базе данных:
get_post_field( 'post_title', 1, 'db' );
Коротко
get_post_field() — это универсальный способ вытащить любые данные записи, не работая напрямую с глобальным объектом $post. Главное — правильно подобрать контекст фильтрации под то, куда пойдёт значение.
Добавить комментарий