post_exists( string $title, string $content = '', string $date = '', string $type = '', string $status = '' ): int
In this article
Determines if a post exists based on title, content, date and type.
Parameters
$titlestringrequired- Post title.
$contentstringoptional- Post content.
Default:
'' $datestringoptional- Post date.
Default:
'' $typestringoptional- Post type.
Default:
'' $statusstringoptional- Post status.
Default:
''
Return
int Post ID if post exists, 0 otherwise.Source
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;
}
Related
| Uses | Description |
|---|---|
sanitize_post_field()wp-includes/post.php | Sanitizes a post field based on context. |
wp_unslash()wp-includes/formatting.php | Removes slashes from a string or recursively removes slashes from strings within an array. |
wpdb::get_var()wp-includes/class-wpdb.php | Retrieves one value from the database. |
wpdb::prepare()wp-includes/class-wpdb.php | Prepares a SQL query for safe execution. |
Changelog
User Contributed Notes
-
Skip to note 3 content -
Skip to note 4 content This function require following code to be added so please add this line as well so user didn’t get function not defined error while using post_exists function.
if ( ! function_exists( 'post_exists' ) ) { require_once ABSPATH . 'wp-admin/includes/post.php'; }
You must log in before being able to contribute a note or feedback.

Check if post exist by title :
Check if custom post type [news] exist by title :