首页 后端开发 php教程 如何使用 AJAX 在 WordPress 中按标签过滤多个帖子,而不使用任何插件

如何使用 AJAX 在 WordPress 中按标签过滤多个帖子,而不使用任何插件

Dec 06, 2024 am 11:10 AM

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">&lt;!-- Container to display worksheets --&gt;
&lt;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('&lt;p&gt;Loading...&lt;/p&gt;');
            },
            success: function (response) {
                if (response.success) {
                    $('.worksheet-container').html(response.data.html);
                } else {
                    $('.worksheet-container').html('&lt;p&gt;' + response.data.message + '&lt;/p&gt;');
                }
            },
            error: function () {
                $('.worksheet-container').html('&lt;p&gt;An error occurred. Please try again.&lt;/p&gt;');
            },
        });
    }
});

登录后复制

第 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' =&gt; '随机数验证失败。'));
        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'=&gt;; '工作表',
        'posts_per_page' =&gt;; -1, // 获取所有帖子
    );

    // 如果选择了条件,则修改查询
    if (!empty($taxonomy) &amp;&amp; !empty($terms)) {
        $args['tax_query'] = 数组(
            大批(
                '分类法' =&gt; $分类法,
                '字段' =&gt; '蛞蝓',
                '条款' =&gt; $terms, // 传递所选术语的数组
                '操作员' =&gt; 'IN', // 匹配任何选定的术语
            ),
        );
    }

    // 运行 WP_Query 来获取帖子
    $query = new WP_Query($args);

    // 检查是否发现任何帖子
    if ($query-&gt;have_posts()) {
        $html = '';
        while ($query-&gt;have_posts()) {
            $query-&gt;the_post();
            // 输出帖子 HTML
            $html .= '<div>




          </div>

            
        
登录后复制

以上是如何使用 AJAX 在 WordPress 中按标签过滤多个帖子,而不使用任何插件的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

11个最佳PHP URL缩短脚本(免费和高级) 11个最佳PHP URL缩短脚本(免费和高级) Mar 03, 2025 am 10:49 AM

11个最佳PHP URL缩短脚本(免费和高级)

在Laravel中使用Flash会话数据 在Laravel中使用Flash会话数据 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash会话数据

6个额外的技能,每个PHP开发人员都应该拥有 6个额外的技能,每个PHP开发人员都应该拥有 Feb 28, 2025 am 10:52 AM

6个额外的技能,每个PHP开发人员都应该拥有

了解PHP中的阵列 了解PHP中的阵列 Feb 28, 2025 am 10:53 AM

了解PHP中的阵列

构建具有Laravel后端的React应用程序:第2部分,React 构建具有Laravel后端的React应用程序:第2部分,React Mar 04, 2025 am 09:33 AM

构建具有Laravel后端的React应用程序:第2部分,React

简化的HTTP响应在Laravel测试中模拟了 简化的HTTP响应在Laravel测试中模拟了 Mar 12, 2025 pm 05:09 PM

简化的HTTP响应在Laravel测试中模拟了

在Codecanyon上的12个最佳PHP聊天脚本 在Codecanyon上的12个最佳PHP聊天脚本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12个最佳PHP聊天脚本

php中的卷曲:如何在REST API中使用PHP卷曲扩展 php中的卷曲:如何在REST API中使用PHP卷曲扩展 Mar 14, 2025 am 11:42 AM

php中的卷曲:如何在REST API中使用PHP卷曲扩展

See all articles