通过AJAX按类别获取帖子

时间:2019-08-06 作者:smilebomb

在我的page-members.php 我输出类别列表

<?php
    $args = array(
        \'orderby\' => \'slug\'
    );
    $categories = get_categories($args);
    foreach ($categories as $category) {
        echo \'<a href="\' . get_category_link($category->term_id) . \'"><div class="category-block">\' . $category->name . \'</div></a>\';
    }
?>
我想点击这些链接,在右侧栏中填入该类别的帖子。

我为这个页面加载了一个js文件;我的functions.php:

if (is_page()) {
    global $post;
    if ($post->post_name == \'members\') {
        wp_enqueue_script(\'jquery\', get_template_directory_uri() . \'/js/jquery.js\', array(), \'\', true);
        wp_enqueue_script(\'blog\', get_template_directory_uri() . \'/js/blog.js\', array(\'jquery\'), \'\', true);
        wp_localize_script(\'blog\', \'ajaxposts\', array(
            \'ajaxurl\' => admin_url(\'admin-ajax.php\')
        ));
    }
}
我的blog.js 仅在“成员”页面上正确加载。

我可以放什么blog.js 按类别加载帖子

1 个回复
SO网友:nmr

将类别ID添加到类别列表项<div class="category-block" data-cid="{ID-OF-CAT}">, 在ajax请求中需要它。您还必须包括action 在请求和显示收到的数据中。

Here 您可以在WP中阅读有关AJAX的更多信息。

博客。js公司

(function($) {
    $(document).ready(function() {
        var cat_buttons = $(".category-block");
        cat_buttons.on( \'click\', function(event){
            // 
            event.preventDefault();
            var cid = $(this).data(\'cid\');
            $.ajax({
                type: "POST",
                url: ajaxposts.ajaxurl,
                data: {
                    action: \'my_action_name\',
                    cat_id: cid // <-- category ID of clicked item / link
                }
            })
            .done( function(data){
                // display posts
            });
        });
    });
})(jQuery);
您还需要PHP函数来处理AJAX请求:

功能。php

add_action( \'wp_ajax_my_action_name\', \'ajx_handle_my_action\' );
add_action( \'wp_ajax_nopriv_my_action_name\', \'ajx_handle_my_action\' );

function ajx_handle_my_action() {
    $category_id = (int)$_POST[\'cat_id\'];
    //
    // read category posts

    echo json_encode( $result );    
    wp_die();
}

相关推荐

用AJAX重新生成基于<SELECT>值的WordPress快捷码

我正在尝试生成&;根据用户选择的<select> 选项我已经在下面发布了我迄今为止的进度,而短代码目前正在表单上被替换POST, 它不支持AJAX—整个页面正在重新加载。我一直试图让这个问题尽可能的笼统,以(希望)帮助其他人,但我对AJAX的经验很少,所以如果能给我提供一些建议,说明我把事情搞砸了,我将不胜感激。PHP在实施方面的背景;[table_generator] 是包含窗体和生成的“子”短代码的父短代码。当用户从下拉列表中选择一个提供者并点击提交按钮时,将在下面生成一个短代码,显