webentwicklung-frage-antwort-db.com.de

Erstellen Sie WP_Query, um nach Beiträgen anhand ihrer Kategorien oder ihrer Eltern/Kind-Kategorien zu suchen

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:

Example

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!

1
Kanga

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 ...

}
0
majick

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

1
Charles Jaimet