Функция POST_EXISTS() в WordPress: описание, параметры и примеры использования

Функция 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 );

Параметры

  1. $title (string) — обязательный. Заголовок поста для сравнения. Это не то же самое, что и post_name.
  2. $content (string) — содержание поста для сравнения. По умолчанию: '' (пустая строка).
  3. $date (string) — дата поста для сравнения в формате MySQL. По умолчанию: '' (пустая строка).
  4. $type (string) — тип поста. По умолчанию: ''.
  5. $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. Надеемся, что данный материал был полезен!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *