Функция POST_EXISTS() в WordPress
Что такое POST_EXISTS?
Функция post_exists() в WordPress позволяет проверить, существует ли пост (статья) с указанным заголовком. Вы также можете проверить содержание и дату поста.
Примечание: Все значения, которые вы передаете в эту функцию, должны быть обработаны (экранироваться). Например, если вы получаете данные через форму, необходимо использовать функцию
wp_slash()для обработки.
Эта функция работает только в административной панели. Если вам нужно использовать её на сайте, добавьте следующий код:
require_once ABSPATH . 'wp-admin/includes/post.php';
Сложность выполнения
- Время выполнения 1 раза — 0.009029 сек (очень медленно)
- Время выполнения 50000 раз — 283.06 сек (крайне медленно)
Возвращаемое значение
Функция возвращает:
- ID поста (цифровое значение) — если пост существует,
- 0 — если поста нет.
Как использовать функцию?
Вы можете использовать функцию post_exists() следующим образом:
post_exists( $title, $content, $date );
Параметры
$title(string) — обязательный. Заголовок поста для сравнения. Это не то же самое, что иpost_name.$content(string) — содержание поста для сравнения. По умолчанию: '' (пустая строка).$date(string) — дата поста для сравнения в формате MySQL. По умолчанию: '' (пустая строка).$type(string) — тип поста. По умолчанию: ''.$status(string) (введен в версии 5.8.0) — статус поста. По умолчанию: ''.
Примеры использования функции
Пример 1: Проверка существования поста с конкретным заголовком
Для проверки существования кастомного типа поста, например, "Новости":
$fount_post = post_exists( "Мой заголовок поста", '', '', 'news' );
echo $fount_post ? "Найден пост с ID #$fount_post" : "Пост не найден!";
Пример 2: Проверка поста с конкретным заголовком
Чтобы проверить, существует ли пост с заголовком "Форматы даты и времени в WordPress", используйте следующий код:
// Подключите необходимые файлы перед использованием функции
// require_once ABSPATH . 'wp-admin/includes/post.php';
if( post_exists( 'Форматы даты и времени в WordPress' ) ) {
echo 'Пост с заголовком "Форматы даты и времени в WordPress" существует.';
}
Важные примечания
- Функция использует глобальный объект базы данных WordPress:
$wpdb.
Изменения в функции
- В версии 2.0.0 функция была введена.
- В версии 5.2.0 добавлен параметр
$type. - В версии 5.8.0 добавлен параметр
$status.
Код функции
Если вам интересно, как выглядит сама функция post_exists(), вот её реализация:
function post_exists( $title, $content = '', $date = '', $type = '', $status = '' ) {
global $wpdb;
$post_title = wp_unslash( sanitize_post_field( 'post_title', $title, 0, 'db' ) );
$post_content = wp_unslash( sanitize_post_field( 'post_content', $content, 0, 'db' ) );
$post_date = wp_unslash( sanitize_post_field( 'post_date', $date, 0, 'db' ) );
$post_type = wp_unslash( sanitize_post_field( 'post_type', $type, 0, 'db' ) );
$post_status = wp_unslash( sanitize_post_field( 'post_status', $status, 0, 'db' ) );
$query = "SELECT ID FROM $wpdb->posts WHERE 1=1";
$args = array();
if ( ! empty( $date ) ) {
$query .= ' AND post_date = %s';
$args[] = $post_date;
}
if ( ! empty( $title ) ) {
$query .= ' AND post_title = %s';
$args[] = $post_title;
}
if ( ! empty( $content ) ) {
$query .= ' AND post_content = %s';
$args[] = $post_content;
}
if ( ! empty( $type ) ) {
$query .= ' AND post_type = %s';
$args[] = $post_type;
}
if ( ! empty( $status ) ) {
$query .= ' AND post_status = %s';
$args[] = $post_status;
}
if ( ! empty( $args ) ) {
return (int) $wpdb->get_var( $wpdb->prepare( $query, $args ) );
}
return 0;
}
Таким образом, вы можете быстро и легко проверить существование постов в WordPress. Надеемся, что данный материал был полезен!