¿Cómo encontrar si existe una publicación con custom_field == x?
-
16-10-2019 - |
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?
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.