it-swarm.com.de

Wie zeige ich Posts über benutzerdefinierte Taxonomiebegriffe mithilfe von Kontrollkästchen an?

Ich hätte gerne ein Formular mit Checkboxen. Jedes Kontrollkästchen wäre ein Begriff aus meiner Taxonomie "Städte". Die Idee ist, dass, wenn ein Benutzer eines der Kontrollkästchen aktiviert, alle Posts angezeigt werden sollen, die in markierten Begriffen NICHT sind.

Wenn ich diesen Code hätte:

$args['tax_query'] = array(
    array(
        'taxonomy' => 'cities',
        'terms' => array('Boston', 'Chicago'),
        'field' => 'slug',
        'operator' => 'NOT IN',
    ),
);
query_posts($args);

Wie kann ich den Wert der Checkboxen an das Terms-Array übergeben? Ich meine zu ändern:

'terms' => array('Boston', 'Chicago'),

zu:

'terms' => array(VALUE CHECKBOX 1, VALUE CHECKBOX 2),

Vielen Dank.

1
Mike

Sie können eine Abfrage mit einem tax_query-Parameter ausführen, der bestimmte Taxonomiebegriffe ausschließt. Siehe diese Antwort .

Bezüglich wo die Abfrage ausführen soll, können Sie entweder ein Formular haben, das an die Seite, auf der es sich befindet, gesendet wird (Sie müssen eine geeignete Vorlagendatei suchen, die für diese Seite aufgerufen wird, oder eine erstellen Benutzerdefiniert) und verarbeiten Sie dann nach dem Aktualisieren der Seite Ihre Formulareingaben, führen Sie Ihre Abfrage aus und zeigen Sie die Ergebnisse an.

Alternativ können Sie Ihre Abfrage auch serverseitig ausführen und über AJAX aufrufen. Für weitere Informationen können Sie hier beginnen (es handelt von Plugins, aber Sie müssen eigentlich kein Plugin erstellen, Sie können immer Ihr _ setzen.PHP Code in functions.php im Theme-Verzeichnis) oder suchen Sie einfach nach Tutorials zur Implementierung von AJAX in WordPress.

BEARBEITEN: Gemäß Ihrem Kommentar ist hier ein Code, um den Wert aus dem Kontrollkästchen auf der Seite zu erhalten. Es ist ungetestet und nur als Richtlinie gedacht. Beachten Sie, dass das Formular sich selbst übermittelt. Dies erreichen wir, indem Sie die Seiten-URL in den Parameter action des Formulars einfügen.

<?php
$cb_city = '';
if(isset($_POST['city']) && $_POST['city'] != '') { // if form was submitted we can get value
    $cb_city = $_POST['city'];
}
?>
<form action="<?php echo get_permalink(); ?>" method="POST">
    <label>Your label
        <?php
            $checked = "";
            if( !empty($cb_city) ){ // pre-populate checkboxif it was checked on form submit
                $checked = "checked";
            }
        ?>
        <input <?= $checked; ?> type="checkbox" name="city" id="city" value="1"/>
    </label>
    <button type="submit" class="btn-submit">Submit</button>
</form>
0
montrealist