post_exists

The timeline below displays how wordpress function post_exists has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.9

/**
 * Determines if a post exists based on title, content, date and type.
 *
 * @since 2.0.0
 * @since 5.2.0 Added the `$type` parameter.
 * @since 5.8.0 Added the `$status` parameter.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $title   Post title.
 * @param string $content Optional. Post content.
 * @param string $date    Optional. Post date.
 * @param string $type    Optional. Post type.
 * @param string $status  Optional. Post status.
 * @return int Post ID if post exists, 0 otherwise.
 */
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 Version: 5.8

/**
 * Determines if a post exists based on title, content, date and type.
 *
 * @since 2.0.0
 * @since 5.2.0 Added the `$type` parameter.
 * @since 5.8.0 Added the `$status` parameter.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $title   Post title.
 * @param string $content Optional post content.
 * @param string $date    Optional post date.
 * @param string $type    Optional post type.
 * @param string $status  Optional post status.
 * @return int Post ID if post exists, 0 otherwise.
 */
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 Version: 5.2

/**
 * Determines if a post exists based on title, content, date and type.
 *
 * @since 2.0.0
 * @since 5.2.0 Added the `$type` parameter.
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $title   Post title.
 * @param string $content Optional post content.
 * @param string $date    Optional post date.
 * @param string $type    Optional post type.
 * @return int Post ID if post exists, 0 otherwise.
 */
function post_exists($title, $content = '', $date = '', $type = '')
{
    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'));
    $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($args)) {
        return (int) $wpdb->get_var($wpdb->prepare($query, $args));
    }
    return 0;
}

WordPress Version: 4.5

/**
 * Determine if a post exists based on title, content, and date
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $title Post title
 * @param string $content Optional post content
 * @param string $date Optional post date
 * @return int Post ID if post exists, 0 otherwise.
 */
function post_exists($title, $content = '', $date = '')
{
    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'));
    $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($args)) {
        return (int) $wpdb->get_var($wpdb->prepare($query, $args));
    }
    return 0;
}

WordPress Version: 4.4

/**
 * Determine if a post exists based on title, content, and date
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string $title Post title
 * @param string $content Optional post content
 * @param string $date Optional post date
 * @return int Post ID if post exists, 0 otherwise.
 */
function post_exists($title, $content = '', $date = '')
{
    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'));
    $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($args)) {
        return (int) $wpdb->get_var($wpdb->prepare($query, $args));
    }
    return 0;
}

WordPress Version: 4.3

/**
 * Determine if a post exists based on title, content, and date
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb
 *
 * @param string $title Post title
 * @param string $content Optional post content
 * @param string $date Optional post date
 * @return int Post ID if post exists, 0 otherwise.
 */
function post_exists($title, $content = '', $date = '')
{
    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'));
    $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($args)) {
        return (int) $wpdb->get_var($wpdb->prepare($query, $args));
    }
    return 0;
}

WordPress Version: 3.7

/**
 * Determine if a post exists based on title, content, and date
 *
 * @since 2.0.0
 *
 * @param string $title Post title
 * @param string $content Optional post content
 * @param string $date Optional post date
 * @return int Post ID if post exists, 0 otherwise.
 */
function post_exists($title, $content = '', $date = '')
{
    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'));
    $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($args)) {
        return (int) $wpdb->get_var($wpdb->prepare($query, $args));
    }
    return 0;
}