WordPress как на ладони
rgbcode is looking for WordPress developers.

post_exists()WP 2.0.0

Проверяет существует ли уже запись (пост) с указанным заголовком (post_title). Для проверки, в дополнении к обязательному заголовку можно указать еще: post_content и post_date.

Функция ожидает экранированные значения для всех параметров. Т.е. если вы получаете данные не из POST запроса, то их нужно обработать функцией wp_slash().

Функция работает только в админке, если она нужна во фронте, нужно подключить файл:

require_once ABSPATH . 'wp-admin/includes/post.php';
1 раз — 0.009029 сек (очень медленно) | 50000 раз — 283.06 сек (тормоз) | PHP 7.1.5, WP 4.9

Хуков нет.

Возвращает

int. ID записи, если она найдена или 0.

Использование

post_exists( $title, $content, $date, $type );
$title(строка) (обязательный)
Заголовок записи (post_title). Не путайте с ярлыком (слагом, post_name).
$content(строка)
Контент записи для сравнивания.
По умолчанию: ''
$date(строка)
Дата записи для сравнивания (в MySQL формате).
По умолчанию: ''
$type(строка) (с 5.2.0)
Тип записи для сравнивания.
По умолчанию: ''
$status(строка) (с 5.8.0)
Статус поста.
По умолчанию: ''

Примеры

0

#1 Проверим существует ли запись c указанным заголовком

// require_once ABSPATH . 'wp-admin/includes/post.php';

if( post_exists('Форматы даты и времени в WordPress') )
	echo 'Запись с заголовком "Форматы даты и времени в WordPress" существует.';

Заметки

  • Global. wpdb. $wpdb WordPress database abstraction object.

Список изменений

С версии 2.0.0 Введена.
С версии 5.2.0 Added the $type parameter.
С версии 5.8.0 Added the $status parameter.

Код post_exists() WP 6.4.3

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;
}
3 комментария
    Войти