J'essaie de faire une recherche de style MySQL avec les fonctions intégrées de Wordpress pour récupérer les articles. Il existe probablement un moyen simple de le faire et je suis probablement un peu en retrait de la solution.
Nous avons des publications avec des champs personnalisés. Il s'agit de données héritées importées sous forme de type de publication personnalisée, les champs custom_field étant les données supplémentaires de notre base de données ancienne. Les champs personnalisés sont configurés comme suit pour chaque publication dans Wordpress dès maintenant:
key = subject
val = Subject One, Subject Two, Subject Three
J'essaie d'extraire toutes les publications où la valeur custom_field est LIKE "Subject Two", à titre d'exemple. Il existe probablement un moyen facile de faire cela qui ne m’a pas encore frappé. Merci de votre aide!
J'ai déjà une requête MySQL qui fonctionne correctement. Je voulais juste utiliser les fonctions de Wordpress pour gérer la requête au lieu de devoir le faire manuellement pour cette vue de thème. Voici l'exemple de travail:
// Get posts that match LIKE this subject
$cft_by_subject = $wpdb->get_results(
"SELECT
wp_posts.ID,
wp_posts.post_title,
wp_posts.post_date,
wp_posts.post_name,
wp_postmeta.meta_value
FROM
wp_posts,
wp_postmeta
WHERE
(wp_posts.ID = wp_postmeta.post_id) AND
(wp_posts.post_type = 'our-custom-post-type') AND
(wp_posts.post_status = 'Publish') AND
(wp_postmeta.meta_key = 'subject') AND
(wp_postmeta.meta_value LIKE '%".$this-is-our-subject."%')
ORDER BY
wp_posts.ID ASC
",
ARRAY_A
);
Vous pouvez utiliser meta_query dans WP_Query
$args = array(
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'subject',
'value' => 'Subject Two',
'compare' => 'LIKE'
)
)
);
$query = new WP_Query( $args );