set_post_format()
— это функция в WordPress, которая позволяет назначить определенный формат записи (поста). Форматы постов — это дополнительные метки, которые помогают структурировать и отображать контент по-разному в зависимости от его типа, например, для галерей, цитат, видео и т.д.
set_post_format( int|WP_Post $post, string $format ): array|WP_Error|false
Параметры:
- $post (int | WP_Post): Обязательный. ID поста или объект поста, для которого нужно установить формат.
- $format (string): Обязательный. Формат поста, который нужно присвоить. Допустимо передавать пустую строку или массив для удаления всех форматов с поста.
Возвращаемое значение:
- array|WP_Error|false: Возвращает массив ID затронутых терминов таксономии
post-format
в случае успеха, объектWP_Error
в случае ошибки (например, если был указан неправильный ID поста), илиfalse
, если формат не был установлен.
Поддерживаемые форматы постов:
- aside
- chat
- gallery
- link
- image
- quote
- status
- video
- audio
Форматы позволяют указать, как именно отображать определенные типы контента. Например, формат gallery
может отображать изображения в слайдере, а quote
может выделять цитаты специальным стилем.
Пример 1: Установка формата записи для текущего поста
Этот пример демонстрирует, как установить формат поста внутри Цикла WordPress:
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
// Устанавливаем формат 'gallery' для текущего поста
set_post_format( get_the_ID(), 'gallery' );
}
}
Пример 2: Удаление всех форматов поста
Чтобы удалить все форматы с поста, передайте в функцию пустую строку:
$post_id = 456; // ID вашего поста
// Удаляем все форматы с указанного поста
set_post_format( $post_id, '' );
Этот код сбросит все форматы для поста с ID 456, сделав его стандартным.
Пример 3: Присвоение формата записи для конкретного поста
Если вам необходимо задать формат поста по его ID вне Цикла WordPress, это можно сделать следующим образом:
$post_id = 789; // Замените на ID нужного поста
$format = 'quote'; // Задаем формат 'quote'
// Устанавливаем формат записи
$result = set_post_format( $post_id, $format );
if ( is_wp_error( $result ) ) {
// Выводим сообщение об ошибке
echo 'Ошибка при установке формата: ' . $result->get_error_message();
} else {
echo 'Формат поста успешно установлен.';
}
Пример 4: Установка формата для нового поста
Допустим, вы создаете пост программно и хотите сразу присвоить ему определенный формат. Вот как это можно сделать:
// Создаем новый пост
$new_post_id = wp_insert_post( array(
'post_title' => 'Моя новая галерея',
'post_content' => 'Это контент поста с галереей',
'post_status' => 'publish'
) );
// Проверяем успешное создание поста
if ( $new_post_id ) {
// Устанавливаем формат 'gallery' для нового поста
set_post_format( $new_post_id, 'gallery' );
echo 'Пост успешно создан и присвоен формат "gallery".';
} else {
echo 'Ошибка при создании поста.';
}
Пример 5: Изменение формата записи в админке
Иногда нужно программно изменить формат записи, когда пользователь сохраняет пост в админке. Например, с помощью хука save_post
можно автоматически установить формат для новых постов.
function auto_set_post_format( $post_id ) {
// Проверяем, не является ли это авто-сохранением
if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
return;
}
// Устанавливаем формат 'status' для всех новых записей
set_post_format( $post_id, 'status' );
}
add_action( 'save_post', 'auto_set_post_format' );
Заключение
Функция set_post_format()
полезна для автоматизации назначения форматов постов в WordPress. Это может быть удобно при создании динамических тем или плагинов, где контент должен быть отображен по-разному в зависимости от типа поста.