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?
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.
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.
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.