Hallo, es tut mir wirklich leid, wenn ich vorher gefragt wurde, aber ich konnte nicht die genaue Lösung finden, die ich brauche. Hier ist also das Problem, das ich in meiner Wordpress-Seite suchen möchte. Immer wenn ein Benutzer das Formular absendet, möchte ich eine Abfrage erstellen, um nach Beiträgen anhand ihrer Kategorien oder ihrer Eltern/Kind-Kategorien zu suchen. Hier ist ein Beispiel:
Also in MYSQL würde es ungefähr so aussehen, aber ich weiß nicht, wie ich es in Wordpress mit Hilfe von WP_Query machen soll, da ich neu in diesem Bereich bin.
SELECT * FROM posts
WHERE posts.category
LIKE '%John Doe%' OR posts.sub_category LIKE '%John Doe%'
Ich habe nicht herausgefunden, wie die Tabellen verbunden sind, daher müssen hier wahrscheinlich ein paar JOIN-Operationen durchgeführt werden, aber ich hoffe, jemand versteht, was ich frage.
Jede Hilfe wäre dankbar. Danke im Voraus!
Verwenden Sie zuerst get_categories
, um alle Beitragskategorien für das Formular zu verwenden, und durchlaufen Sie sie dann, um eine Mehrfachprüfungs-Eingabe anzuzeigen ...
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>";
Dann würden Sie im Suchteil das Array der angekreuzten Kategorien zusammenstellen, die an WP_Query
übergeben werden sollen:
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 ...
}
Benutze das:
$query = new WP_Query( array( 'cat' => 4 ) );
Wobei 4 die ID der obersten Kategorie ist (Blackburn). Diese Abfrage schließt Unterkatzen ein.
Referenz - WP_Query