Bonjour, je suis vraiment désolé si cela a déjà été demandé, mais je n’ai pas trouvé la solution exacte dont j’ai besoin. Alors voici le problème que je veux créer une recherche dans ma page Wordpress. À chaque fois qu'un utilisateur envoie le formulaire, je souhaite créer une requête pour rechercher des publications par catégories ou par catégories de parents/enfants. Voici un exemple:
Donc, dans MYSQL, cela ressemblerait à quelque chose comme cela, mais je ne sais pas comment le faire dans Wordpress avec l’aide de WP_Query puisque je suis nouveau dans ce domaine.
SELECT * FROM posts
WHERE posts.category
LIKE '%John Doe%' OR posts.sub_category LIKE '%John Doe%'
Je n'ai pas compris comment les tables sont connectées, donc quelques opérations JOIN doivent être effectuées ici, mais j'espère que quelqu'un comprendra ce que je demande.
Toute aide serait appréciée. Merci d'avance!
Utilisez d'abord get_categories
pour obtenir toutes les catégories de publication à utiliser dans le formulaire, puis parcourez-les pour afficher une entrée multicheck ...
function hierarchical_category_inputs ($cat, $indent) {
$cats = get_categories('hide_empty=false&orderby=name&order=ASC&parent='.$cat);
$indent++;
if ($cats) {
foreach ($cats as $cat) {
echo "<input type='checkbox' name='cat-".$cat->term_id."'";
echo " style='margin-left: ".($indent*10)."px;'> ".$cat->name."<br>";
hierarchical_category_inputs($cat->term_id, $indent);
}
}
}
echo "<form method='post'>";
// 0 for all categories, -1 so first indent is 0
hierarchical_category_inputs(0,-1);
echo "<input type='hidden' name='custom_catsearch' value='yes'>";
echo "<input type='submit' value='Search'>";
echo "</form>";
Ensuite, dans la partie recherche, vous assembleriez le tableau des catégories cochées pour le transférer à WP_Query
:
function custom_catsearch_output() {
$cats = array();
foreach ($_POST as $key => $value) {
// make sure the post key starts with cat-
if (substr($key,0,4) == 'cat-') {
// check for check of the checkbox
if ($value == '1') {
// get the cat id from after cat-
$cats[] = substr($key,4,strlen($key));
}
}
}
$query = new WP_Query(array('cat' => $cats));
print_r($query);
// ... do something different with the results ...
}
Utilisez ceci:
$query = new WP_Query( array( 'cat' => 4 ) );
Où 4 est l'ID de la catégorie de niveau supérieur (Blackburn). Cette requête inclura les sous-chats.
Référence - WP_Query