Verifică dacă o valoare de meta key există deja
Să presupunem că am câteva articole cu meta key "videoid". Valoarea acestei meta key este diferită pentru fiecare articol (și trebuie să fie diferită). Când adaug un articol nou, cum pot verifica dacă un videoid cu aceeași valoare există deja pentru alte articole mai vechi? Am folosit acest lucru ca referință pentru adăugarea unui meta box personalizat în zona de administrare WP: http://codex.wordpress.org/Function_Reference/add_meta_box

Pur și simplu efectuează o interogare cu WP_Query
folosind parametrii Custom Field (meta_query
) pentru a căuta postări cu cheia meta și valoarea - exemplu de cod:
// argumente pentru interogarea cheii tale
$args = array(
'post_type' => 'your_post_type',
'meta_query' => array(
array(
'key' => 'videoid',
'value' => $new_posts_videoid // de exemplu: '111'
)
),
'fields' => 'ids'
);
// execută interogarea
$vid_query = new WP_Query( $args );
$vid_ids = $vid_query->posts;
// fă ceva dacă perechea meta-key-value există în altă postare
if ( ! empty( $vid_ids ) ) {
// fă ce ai de făcut
}
Nu este nevoie să folosești query_post()
- vezi:
Când ar trebui să folosești WP_Query vs query_posts() vs get_posts()?
. Dacă ai nevoie de un array complet de obiecte post, nu doar ID-uri, elimină 'fields' => 'ids'
.

$q_vid nu returnează doar o listă de ID-uri, ci întregul obiect wp_query. Vezi răspunsul meu pentru soluție

corect, mulțumesc, aș aprecia dacă ai corecta prin editarea răspunsului meu data viitoare @JordanLejuwaan

Răspunsul lui ialocin afirmă greșit că wp_query stocat ca variabilă ar returna doar un array de ID-uri. În schimb, returnează întregul obiect WP_Query, așa că trebuie să folosești ->posts pentru a obține acel array cu ID-urile postărilor.
// argumente pentru interogarea cheii tale
$args = array(
'post_type' => 'TIPUL_TAU_DE_POSTARE',
'meta_query' => array(
array(
'key' => 'NUMELE_CÂMPULUI_META',
'value' => '111'
)
),
'fields' => 'ids'
);
// execută interogarea
$query = new WP_Query( $args );
$duplicate = $query->posts;
// fă ceva dacă perechea cheie-valoare există într-o altă postare
if ( ! empty( $duplicate ) ) {
// fă ce trebuie
}

Sau poți înfășura logica într-o funcție:
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;
}
}
Apoi poți verifica simplu valoarea meta:
$video_id = 1234;
if(meta_value_exists($video_id){
// fă ceva dacă există
} else {
// fă ceva dacă nu există
}

Am găsit:
$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;
