4 comments

  1. Just do a query with WP_Query using the Custom Field parameters (meta_query) to look for posts with the meta key and the value – exemplary code:

     // args to query for your key
     $args = array(
       'post_type' => 'your_post_type',
       'meta_query' => array(
           array(
               'key' => 'videoid',
               'value' => $new_posts_videoid  // for example: '111'
           )
       ),
       'fields' => 'ids'
     );
     // perform the query
     $vid_query = new WP_Query( $args );
    
     $vid_ids = $vid_query->posts;
    
     // do something if the meta-key-value-pair exists in another post
     if ( ! empty( $vid_ids ) ) {
         // do your stuff
     }
    

    There is no need to use query_post() – see:
    When should you use WP_Query vs query_posts() vs get_posts()?
    . If you need a complete array of post objects, not just the ids, remove 'fields' => 'ids'.

  2. ialocin’s answer incorrectly states that the wp_query stored as a variable would just spit out an array of ID’s. Instead it gives the whole WP_Query object, so you have to use ->posts to get that array of post ID’s.

    // args to query for your key
     $args = array(
       'post_type' => 'YOUR_POST_TYPE',
       'meta_query' => array(
           array(
               'key' => 'YOUR_META_FIELD_NAME',
               'value' => '111'
           )
       ),
       'fields' => 'ids'
     );
     // perform the query
     $query = new WP_Query( $args );
     $duplicates = $query->posts;
    
     // do something if the key-value-pair exists in another post
     if ( ! empty( $duplicates ) ) {
         // do your stuff
     }
    
  3. Or wrap it up in a function:

    function meta_value_exists($your_meta_value) {
        $args = array(
            'post_type'   => 'YOUR_POST_TYPE',
            'post_status' => 'publish',
            'numberposts' => 1,
            'meta_key'     => 'your_meta_field',
            'meta_value'   => $your_meta_value,
        );
        $current_post = get_posts($args);
        if( $current_post ) {
            return true;
        } else {
            return false;
        }
    }
    

    So then you could just check on your meta value:

    $video_id = 1234;
    if(meta_value_exists($video_id){
       // do something if exists
    } else {
       // do something if not exists
    }
    
  4. Found it:

    $args = array(
        'meta_query' => array(
            array(
                'key' => 'videoid',
                'value' => $_POST['videoid']
            )
        )
    );
    
    $videoQuery = new WP_Query( $args ); 
    
    if ( $videoQuery->have_posts() ) :
        while ( $videoQuery->have_posts() ) : 
                $videoQuery->the_post(); ?>
        echo "<h3 class='post-title'>" . the_title() . "</h3>";
        endwhile; 
        endif;
    

Comments are closed.