ステップ 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 サイトの他の関連記事を参照してください。