Verificar si un valor de meta clave ya existe
Digamos que tengo varios posts con la meta clave "videoid". El valor de esa meta clave es diferente para cada post (y debe ser diferente). Al añadir un nuevo post, ¿cómo puedo verificar si ya existe un videoid con ese valor exacto en otros posts más antiguos? Usé esto como referencia para añadir un metabox personalizado al área de administración de WP: http://codex.wordpress.org/Function_Reference/add_meta_box

Simplemente realiza una consulta con WP_Query
utilizando los parámetros de Campos Personalizados (meta_query
) para buscar posts con la clave meta y el valor - código de ejemplo:
// argumentos para consultar tu clave
$args = array(
'post_type' => 'tu_tipo_de_post',
'meta_query' => array(
array(
'key' => 'videoid',
'value' => $new_posts_videoid // por ejemplo: '111'
)
),
'fields' => 'ids'
);
// ejecuta la consulta
$vid_query = new WP_Query( $args );
$vid_ids = $vid_query->posts;
// haz algo si el par clave-valor-meta existe en otro post
if ( ! empty( $vid_ids ) ) {
// realiza tus acciones
}
No es necesario usar query_post()
- ver:
¿Cuándo deberías usar WP_Query vs query_posts() vs get_posts()?
. Si necesitas un array completo de objetos de post, no solo los IDs, elimina 'fields' => 'ids'
.

$q_vid no devuelve solo una lista de IDs, es todo el objeto wp_query. Mira mi respuesta para la solución

cierto, gracias, te agradecería si lo arreglas editando mi respuesta la próxima vez @JordanLejuwaan

La respuesta de ialocin indica incorrectamente que la consulta WP_Query almacenada en una variable solo devolvería un array de IDs. En realidad, devuelve todo el objeto WP_Query, por lo que hay que usar ->posts para obtener ese array de IDs de publicaciones.
// Argumentos para consultar tu campo personalizado
$args = array(
'post_type' => 'TU_TIPO_DE_PUBLICACION',
'meta_query' => array(
array(
'key' => 'NOMBRE_DE_TU_CAMPO_META',
'value' => '111'
)
),
'fields' => 'ids'
);
// Ejecutar la consulta
$query = new WP_Query($args);
$duplicados = $query->posts;
// Hacer algo si el par clave-valor existe en otra publicación
if (!empty($duplicados)) {
// Realiza tus acciones aquí
}

O envuélvelo en una función:
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;
}
}
Entonces podrías verificar fácilmente tu valor meta:
$video_id = 1234;
if(meta_value_exists($video_id){
// hacer algo si existe
} else {
// hacer algo si no existe
}

Encontrado:
$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;
