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 Перевіримо, чи існує запис з зазначеним заголовком

// 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.0Added $type parameter.
З версії 5.8.0Added $status parameter.

Код post_exists() WP 6.0.2

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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *