Rumah >pembangunan bahagian belakang >tutorial php >Cara Menapis berbilang Siaran dalam WordPress dengan teg Menggunakan AJAX, tanpa menggunakan sebarang pemalam

Cara Menapis berbilang Siaran dalam WordPress dengan teg Menggunakan AJAX, tanpa menggunakan sebarang pemalam

Patricia Arquette
Patricia Arquetteasal
2024-12-06 11:10:17380semak imbas

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

Langkah-1:
Kotak Semak Html Seperti ini:

<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>');
            },
        });
    }
});

Langkah-3:
Cipta Fungsi dalam functions.php:

// Daftar tindakan AJAX untuk pengguna log masuk (anda boleh tambah untuk pengguna yang tidak log masuk juga)
add_action('wp_ajax_fetch_subjects', 'fetch_subjects');
add_action('wp_ajax_nopriv_fetch_subjects', 'fetch_subjects');
function fetch_subjects() {
    // Sahkan nonce untuk keselamatan
    jika (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'ajax_nonce')) {
        wp_send_json_error(array('message' => 'Nonce verification failed.'));
        wp_die();
    }

    // Dapatkan taksonomi dan terma daripada permintaan AJAX
    $taksonomi = isset($_POST['taksonomi']) ? sanitize_text_field($_POST['taksonomi']) : '';
    $terms = isset($_POST['terms']) ? array_map('sanitize_text_field', $_POST['terms']): array();

    // Argumen pertanyaan lalai
    $args = array(
        'post_type' => 'lembaran kerja',
        'posts_per_page' => -1, // Ambil semua siaran
    );

    // Jika istilah dipilih, ubah suai pertanyaan
    jika (!kosong($taksonomi) && !kosong($istilah)) {
        $args['tax_query'] = tatasusunan(
            tatasusunan(
                'taksonomi' => $taksonomi,
                'medan' => 'slug',
                'syarat' => $terms, // Lulus tatasusunan istilah yang dipilih
                'pengendali' => 'IN', // Padankan mana-mana istilah yang dipilih
            ),
        );
    }

    // Jalankan WP_Query untuk mengambil siaran
    $query = WP_Query baharu($args);

    // Semak sama ada sebarang catatan ditemui
    if ($query->have_posts()) {
        $html = '';
        manakala ($query->have_posts()) {
            $query->the_post();
            // Keluarkan HTML siaran
            $html .= '<div>




          

            
        

Atas ialah kandungan terperinci Cara Menapis berbilang Siaran dalam WordPress dengan teg Menggunakan AJAX, tanpa menggunakan sebarang pemalam. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn