Функция set_post_type()
используется для изменения типа записи (post type) в WordPress. Это полезно, когда необходимо переназначить уже существующую запись на другой тип, будь то стандартные типы, такие как post
или page
, или пользовательские типы записей (custom post types).
set_post_type( int $post_id, string $post_type = ‘post’ ): int|false
Функция изменяет тип записи, используя её ID, и автоматически очищает кэш для записи и связанных с ней таксономий. Например, вы можете преобразовать обычную запись (post
) в страницу (page
) или в другой пользовательский тип записи. Все данные записи, такие как заголовок, содержимое и метаполя, сохраняются при изменении типа.
Параметры
$post_id
(обязательный, тип: int) — ID записи, которую нужно изменить. По умолчанию:0
.$post_type
(опциональный, тип: string) — Новый тип записи. По умолчанию:'post'
.
Возвращаемое значение
Функция возвращает количество изменённых строк в базе данных (int) или false
в случае неудачи:
1
— если изменение прошло успешно;0
— если запись не была обновлена;false
— в случае ошибки (например, если неверный ID записи или тип).
Пример 1: Преобразование записи в страницу
В этом примере мы возьмем запись с ID 25
и изменим её тип на страницу (page
):
$post_id = 25;
if ( set_post_type( $post_id, 'page' ) ) {
printf( __( 'Запись с ID %d теперь является страницей.', 'textdomain' ), $post_id );
} else {
echo __( 'Не удалось изменить тип записи на страницу.', 'textdomain' );
}
Результат: если функция сработает успешно, будет выведено сообщение, что запись стала страницей.
Пример 2: Изменение типа записи на пользовательский тип
Предположим, у вас есть пользовательский тип записи portfolio
, и вам нужно преобразовать запись с ID 42
в этот тип:
$post_id = 42;
$post_type = 'portfolio';
if ( set_post_type( $post_id, $post_type ) ) {
printf( __( 'Запись %d теперь принадлежит типу %s.', 'textdomain' ), $post_id, $post_type );
} else {
printf( __( 'Не удалось изменить тип записи на %s.', 'textdomain' ), $post_type );
}
Этот код изменит тип записи на portfolio
и выведет сообщение об успехе или неудаче.
Пример 3: Изменение типа записи обратно на стандартный
Если вам нужно вернуть запись к стандартному типу post
, вы можете использовать следующий код:
$post_id = 101;
if ( set_post_type( $post_id, 'post' ) ) {
printf( __( 'Запись с ID %d теперь снова является постом.', 'textdomain' ), $post_id );
} else {
echo __( 'Не удалось изменить тип записи на post.', 'textdomain' );
}
Этот код возвращает запись с ID 101
к типу post
.
Заключение
Функция set_post_type()
предоставляет простой способ изменения типа записи в WordPress. Это удобно для переноса записей между различными типами, включая стандартные и пользовательские. Функция также сохраняет все данные записи, что делает её безопасной и гибкой для использования в различных сценариях.