Comment trouver si un poste avec custom_field == existe X?
-
16-10-2019 - |
Question
Je dois trouver si un poste avec un champ personnalisé X à Y égale existe dans une installation de wordpress.
dois-je faire avec une simple requête SQL ou est-il construire quelque chose qui peut me aider à y parvenir?
La solution
Vous pouvez utiliser la WP_Query (); de vérifier que comme ceci:
$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
}
Hope this helps.
Autres conseils
La façon actuelle serait quelque chose comme ceci:
$posts = get_posts(array(
'meta_key' => 'color',
'meta_value' => 'blue',
));
if( !empty($posts) ) { // some posts found }
Il suffit de noter que dans les prochains 3.1 Interrogation des champs personnalisés est considérablement améliorée et le changement des arguments, voir Champ personnalisé paramètres dans le Codex.
Si vous souhaitez utiliser cette externe (par vos commentaires), pour garder le pas cher d'opération que vous pourriez faire quelque chose comme ça.
<?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>';
?>
Chargement wp-config.php
et wp-db.php
devrait être suffisant pour faire appel à des méthodes de $wpdb
pour interroger la base de données pour toutes les données dont vous avez besoin.
Laissez-moi savoir si vous avez besoin d'un exemple de requête SQL pour récupérer les messages en fonction de méta.