第 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 步:
在functions.php中创建函数:
// 为登录用户注册AJAX操作(您也可以为非登录用户添加) add_action('wp_ajax_fetch_subjects', 'fetch_subjects'); add_action('wp_ajax_nopriv_fetch_subjects', 'fetch_subjects'); 函数 fetch_subjects() { // 验证随机数以确保安全 if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'ajax_nonce')) { wp_send_json_error(array('message' => '随机数验证失败。')); wp_die(); } // 从 AJAX 请求中获取分类和术语 $taxonomy = isset($_POST['taxonomy']) ? sanitize_text_field($_POST['分类']) : ''; $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 = new WP_Query($args); // 检查是否发现任何帖子 if ($query->have_posts()) { $html = ''; while ($query->have_posts()) { $query->the_post(); // 输出帖子 HTML $html .= '<div> </div>
以上是如何使用 AJAX 在 WordPress 中按标签过滤多个帖子,而不使用任何插件的详细内容。更多信息请关注PHP中文网其他相关文章!