web-dev-qa-db-fra.com

Comment savoir si une publication avec un champ personnalisé == X existe?

Je dois trouver si un article avec un champ personnalisé X égal à Y existe dans une installation WordPress.

Devrais-je le faire avec une requête SQL simple ou y at-il quelque chose de intégré qui peut m'aider à y parvenir?

1
user3148

Vous pouvez utiliser le WP_Query (); pour vérifier ça comme ça:

$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
}

J'espère que cela t'aides.

3
Bainternet

La manière actuelle serait quelque chose comme ceci:

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

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

Notez simplement que dans la prochaine version 3.1, l'interrogation des champs personnalisés est considérablement améliorée et que les arguments changent, voir Paramètres des champs personnalisés dans Codex.

1
Rarst

Si vous voulez utiliser cela en externe (selon vos commentaires), vous pouvez faire quelque chose comme ça pour que l'opération soit bon marché.

<?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>';
?>

Le chargement de wp-config.php et wp-db.php devrait suffire à faire appel aux méthodes $wpdb pour interroger la base de données pour obtenir les données dont vous avez besoin.

Faites-moi savoir si vous avez besoin d'un exemple de requête SQL pour récupérer des publications basées sur la méta.

0
t31os