Heim > Backend-Entwicklung > PHP-Tutorial > So filtern Sie mehrere Beiträge in WordPress nach Tags mithilfe von AJAX, ohne ein Plugin zu verwenden

So filtern Sie mehrere Beiträge in WordPress nach Tags mithilfe von AJAX, ohne ein Plugin zu verwenden

Patricia Arquette
Freigeben: 2024-12-06 11:10:17
Original
378 Leute haben es durchsucht

How to Filter multiple Posts in WordPress by tag Using AJAX, without using any plugin

Schritt-1:
HTML-Kontrollkästchen wie folgt:

<div>



<p>display all tabs or subjects container:<br>
</p>

<pre class="brush:php;toolbar:false"><!-- Container to display worksheets -->
<div>



<p><strong>Step-2:</strong><br>
create js file:<br>
</p>

<pre class="brush:php;toolbar:false">jQuery(document).ready(function ($) {
    // Fetch Subjects on any checkbox change
    $('.subject-filter').on('change', function () {
        // Gather all selected grades
        var taxonomy = $(this).data('taxonomy'); // Taxonomy name
        var terms = []; // Array to hold selected terms
        $('.subject-filter:checked').each(function () {
            terms.push($(this).val());
        });

        // Fetch Subjects for selected grades
        fetchSubjects(taxonomy, terms);
    });

    // Function to fetch Subjects
    function fetchSubjects(taxonomy = '', terms = []) {
        $.ajax({
            url: ajax_object.ajax_url,
            type: 'POST',
            data: {
                action: 'fetch_subjects',
                nonce: ajax_object.nonce,
                taxonomy: taxonomy,
                terms: terms, // Send array of selected terms
            },
            beforeSend: function () {
                $('.worksheet-container').html('<p>Loading...</p>');
            },
            success: function (response) {
                if (response.success) {
                    $('.worksheet-container').html(response.data.html);
                } else {
                    $('.worksheet-container').html('<p>' + response.data.message + '</p>');
                }
            },
            error: function () {
                $('.worksheet-container').html('<p>An error occurred. Please try again.</p>');
            },
        });
    }
});

Nach dem Login kopieren

Schritt-3:
Erstellen Sie Funktionen in „functions.php:
“.

// AJAX-Aktion für angemeldete Benutzer registrieren (Sie können sie auch für nicht angemeldete Benutzer hinzufügen)
add_action('wp_ajax_fetch_subjects', 'fetch_subjects');
add_action('wp_ajax_nopriv_fetch_subjects', 'fetch_subjects');
Funktion fetch_subjects() {
    // Nonce aus Sicherheitsgründen überprüfen
    if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'ajax_nonce')) {
        wp_send_json_error(array('message' => 'Nonce-Überprüfung fehlgeschlagen.'));
        wp_die();
    }

    // Taxonomie und Begriffe aus der AJAX-Anfrage abrufen
    $taxonomy = isset($_POST['taxonomy']) ? sanitize_text_field($_POST['taxonomy']): '';
    $terms = isset($_POST['terms']) ? array_map('sanitize_text_field', $_POST['terms']): array();

    // Standardabfrageargumente
    $args = array(
        'post_type' => 'Arbeitsblatt',
        'posts_per_page' => -1, // Alle Beiträge abrufen
    );

    // Wenn Begriffe ausgewählt sind, ändern Sie die Abfrage
    if (!empty($taxonomy) && !empty($terms)) {
        $args['tax_query'] = array(
            Array(
                'Taxonomie' => $Taxonomie,
                'Feld' => 'Schnecke',
                'Begriffe' => $terms, // Übergeben Sie das Array der ausgewählten Begriffe
                'Operator' => 'IN', // Entspricht einem der ausgewählten Begriffe
            ),
        );
    }

    // WP_Query ausführen, um Beiträge abzurufen
    $query = new WP_Query($args);

    // Überprüfen Sie, ob Beiträge gefunden wurden
    if ($query->have_posts()) {
        $html = '';
        while ($query->have_posts()) {
            $query->the_post();
            // Den Beitrag im HTML-Format ausgeben
            $html .= '<div>




          

            
        
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo filtern Sie mehrere Beiträge in WordPress nach Tags mithilfe von AJAX, ohne ein Plugin zu verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage