Je sais que la question est assez ambiguë. Laisse-moi expliquer:
J'ai une page qui répertorie tous les messages avec une certaine valeur d'un champ personnalisé. (Exemple: la page Rentals
répertorie toutes les publications avec la valeur rental
du champ personnalisé offer_type
).
J'aimerais ajouter une option de filtrage par ville, afin que seules les publications avec une certaine valeur de city
champ personnalisé soient affichées. Pour cela, j'ai créé un formulaire à l'aide de la méthode get
qui crée une requête personnalisée (dans mon exemple, avec deux champs personnalisés, "offer_type" et "city").
Ce dont j'ai besoin est un moyen de répertorier toutes les villes (valeurs du champ personnalisé city
) pour les publications ayant la valeur rental
de offer_type
. Chaque ville doit être répertoriée une fois.
J'ai essayé ce morceau de code (notez que j'ai pris tout le formulaire):
$metakey = 'city';
$cities = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value
FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
if ($cities) {
foreach ( $cities as $city ) {
echo $city;
}
}
mais cela répertorie toutes les valeurs du champ personnalisé city
pour toutes les publications (donc si, par exemple, j'ai une publication avec une valeur de offer_type
différente de rental
, sa valeur de city
est affichée dans ma liste).
Je sais que le problème concerne les requêtes SQL et les tables de jointure, mais je manque vraiment de compétences pour résoudre ce problème.
S'il vous plaît aider!
consultez la documentation de référence de la classe WP_Query: http://codex.wordpress.org/Class_Reference/WP_Query
quelque chose comme ça:
$args = array(
//some key/value pairs...whatever
'meta_query => array(
array(
'key' => somekey,
'value' => somevalue,
'compare' => some comparison operator
),
array(
'key' => some other key,
'value' => some other value,
'compare' => some comparison operator
)
)
)
$my_query = new WP_Query( $args );
//some code to do something with the results of the query
ce n'est pas une réponse directe à votre question, mais une ligne de code que vous utiliseriez comme référence pour travailler.
voici une copie de ce que j’utilise pour chercher dans ma table, je cherche entre une plage de données et la limite ensuite à l’affichage des instances d’un usr_id entré
$this->items = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name WHERE `datec` BETWEEN CAST('$start_date' AS DATE) AND CAST('$end_date' AS DATE) AND `usr_id`= $usr_id"), ARRAY_A);
j'espère que cela t'aides :)