Pregunta

Necesito encontrar si una publicación con un campo personalizado X igual a Y existe en una instalación de WordPress.

¿Debo hacerlo con una consulta SQL simple o hay algo en lo que puede ayudarme a lograrlo?

¿Fue útil?

Solución

Puedes usar el WP_Query(); Para verificar eso así:

$my_query = new WP_Query();
$my_query->query(array( 'meta_key' => 'X', 'meta_value' => 'Y'));
if ( $my_query->have_posts() ){

     //it exists

} else {
    //it's not here
}

Espero que esto ayude.

Otros consejos

La forma actual sería algo como esto:

$posts = get_posts(array(
    'meta_key' => 'color',
    'meta_value' => 'blue',
));

if( !empty($posts) ) { // some posts found }

Solo tenga en cuenta que en la próxima consulta 3.1 para campos personalizados se mejora considerablemente y el cambio de argumentos, ver Parámetros de campo personalizados en el códice.

Si desea usar esto externamente (según sus comentarios), para mantener la operación barata podría hacer algo como esto.

<?php
// You'll need to make sure the path is correct here
include_once 'wp-config.php';
include_once 'wp-includes/wp-db.php';

// Of course update the following line with a more appropriate query
$result = $wpdb->get_results("SELECT * FROM $wpdb->posts"); 

print '<pre>';
print_r( $result ); // Remove and do whatever you need to do
print '</pre>';
?>

Cargando wp-config.php y wp-db.php debería ser suficiente para llamar al $wpdb Métodos para consultar el DB para cualquier datos que necesite.

Avíseme si necesita una consulta SQL de ejemplo para obtener publicaciones basadas en Meta.

Licenciado bajo: CC-BY-SA con atribución
scroll top