Функция get_post_field()
в WordPress используется для извлечения значения конкретного поля из объекта записи. Она предоставляет удобный способ получения различных метаданных записи, таких как заголовок, контент, статус публикации и другие свойства. Важной особенностью является то, что результат функции фильтруется и очищается в зависимости от указанного контекста.
get_post_field( string $field, int|WP_Post $post = null, string $context = 'display' )
- $field (string) — Название поля, значение которого требуется получить. Это может быть любое поле из таблицы
wp_posts
, такое как ‘post_title’, ‘post_content’, ‘post_status’ и другие. - $post (int|WP_Post) — ID записи или объект записи, из которой нужно извлечь значение. Если параметр не указан, будет использоваться текущая запись в цикле. Начиная с версии 4.5, параметр стал необязательным.
- $context (string) — Контекст, в котором будет возвращаться значение. Определяет, как будет обрабатываться результат. Возможные значения:
- ‘
raw
‘ — Без какой-либо очистки. - ‘
edit
‘ — Для использования в формах редактирования. - ‘
db
‘ — Для использования в запросах к базе данных. - ‘
display
‘ — Для вывода на экран. - ‘
attribute
‘ — Для использования в HTML-атрибутах. - ‘
js
‘ — Для использования в JavaScript данных.
По умолчанию используется значение ‘display
‘.
- ‘
Возвращаемое значение
Функция возвращает очищенное значение указанного поля. Если запись с таким ID не существует или поле не найдено, функция вернет пустую строку или объект WP_Error
, в зависимости от контекста.
Санитизация и фильтрация
Функция get_post_field()
очищает результат в зависимости от указанного контекста, используя функцию sanitize_post_field()
. Это обеспечивает, что возвращаемые данные безопасны для использования в различных ситуациях. Например:
- ‘raw’ — Значение возвращается без очистки.
- ‘edit’ — Значение очищается для использования в формах редактирования.
- ‘db’ — Значение очищается для безопасного использования в запросах к базе данных.
- ‘display’ — Значение очищается для безопасного вывода на экран.
- ‘attribute’ — Значение очищается для использования в HTML-атрибутах.
- ‘js’ — Значение очищается для использования в JavaScript данных.
Пример 1: Получение заголовка записи для использования в запросе
$field = get_post_field( 'post_title', 1, 'db' );
echo 'Заголовок записи: ' . esc_html( $field );
В этом примере функция возвращает заголовок записи с ID 1, очищенный для безопасного использования в запросе к базе данных.
Пример 2: Получение содержимого записи для вывода на экран
$post_id = 123;
$post_content = get_post_field( 'post_content', $post_id, 'display' );
echo 'Содержимое записи: ' . wp_kses_post( $post_content );
Здесь функция получает содержимое записи, очищенное для безопасного отображения на сайте.
Пример 3: Получение типа записи
$post_id = 456;
$post_type = get_post_field( 'post_type', $post_id );
echo 'Тип записи: ' . esc_html( $post_type );
Этот пример показывает, как получить тип записи с заданным ID. Также можно использовать функцию get_post_type()
для этой цели.
Пример 4: Получение ID текущей записи
$post_id = get_post_field( 'ID' );
echo 'ID текущей записи: ' . intval( $post_id );
Обратите внимание на чувствительность к регистру в параметре $field
. Например, ‘ID’ вернет ID текущего поста, тогда как ‘id’ вернет пустую строку.
Список всех полей (чувствительно к регистру)
ID
post_author
post_date
post_date_gmt
post_content
post_title
post_excerpt
post_status
comment_status
ping_status
post_password
post_name
to_ping
pinged
post_modified
post_modified_gmt
post_content_filtered
post_parent
guid
menu_order
post_type
post_mime_type
comment_count
filter
Заключение
Функция get_post_field()
— это мощный инструмент для получения различных полей записей в WordPress. Она обеспечивает безопасность и корректность данных за счет очистки и фильтрации результатов в зависимости от указанного контекста. Это делает функцию полезной для различных сценариев использования, будь то вывод на сайт, использование в запросах или работа с формами редактирования.