ホームページ > バックエンド開発 > PHPチュートリアル > プラグインを使用せずに、AJAX を使用して WordPress で複数の投稿をタグでフィルタリングする方法

プラグインを使用せずに、AJAX を使用して WordPress で複数の投稿をタグでフィルタリングする方法

Patricia Arquette
リリース: 2024-12-06 11:10:17
オリジナル
378 人が閲覧しました

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

ステップ 1:
HTML チェックボックス 次のように:

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

ログイン後にコピー

ステップ-3:
function.php で関数を作成します:

// ログインしているユーザーの AJAX アクションを登録します (ログインしていないユーザーにも追加できます)
add_action('wp_ajax_fetch_subjects', 'fetch_subjects');
add_action('wp_ajax_nopriv_fetch_subjects', 'fetch_subjects');
関数 fetch_subjects() {
    // セキュリティのために nonce を検証する
    if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'ajax_nonce')) {
        wp_send_json_error(array('message' => 'Nonce 検証に失敗しました。'));
        wp_die();
    }

    // AJAX リクエストから分類と用語を取得します
    $taxonomy = isset($_POST['taxonomy']) ? sanitize_text_field($_POST['taxonomy']) : '';
    $terms = isset($_POST['terms']) ? array_map('sanitize_text_field', $_POST['terms']) : array();

    // デフォルトのクエリ引数
    $args = 配列(
        'post_type' => 「ワークシート」、
        'posts_per_page' => -1, // すべての投稿を取得します
    );

    // 用語が選択されている場合は、クエリを変更します
    if (!empty($taxonomy) && !empty($terms)) {
        $args['tax_query'] = 配列(
            配列(
                '分類' => $分類法、
                'フィールド' => 「ナメクジ」、
                '用語' => $terms, // 選択した用語の配列を渡します
                '演算子' => 'IN', // 選択した用語のいずれかに一致します
            )、
        );
    }

    // WP_Query を実行して投稿を取得します
    $query = 新しい WP_Query($args);

    // 投稿が見つかったかどうかを確認します
    if ($query->have_posts()) {
        $html = '';
        while ($query->have_posts()) {
            $query->the_post();
            // 投稿のHTMLを出力します
            $html .= '<div>




          </div>

            
        
ログイン後にコピー

以上がプラグインを使用せずに、AJAX を使用して WordPress で複数の投稿をタグでフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート