通过AJAX调用加载不同年份的帖子

时间:2015-01-03 作者:user49869

我需要一些关于这个的建议。我想根据用户点击的年份加载特定年份的帖子,为此,我有以下几点:

<?php
    $args = array(
            \'post_type\' => \'post\',
            \'ignore_sticky_posts\' => 1,
            \'year\'  => \'2015\',
    );

    $the_query = new WP_Query( $args );
?>

<?php if ( $the_query->have_posts() ) : ?>
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

        <div class="post-item" style="margin-bottom: 70px;">
            <div class="post-info">
                <p class="post-time">
                    <?php echo get_the_date(); ?>
                </p>
                <h2 class="post-title">
                    <?php the_title(); ?>
                </h2>
                <div class="post-content">
                    <?php the_content(); ?> 
                </div>
            </div>
        </div>
        <?php endwhile; ?>
<?php endif; ?>

<?php wp_reset_postdata(); ?>
有了这个,我将展示2015年的所有帖子。我的问题是,我怎样才能把这两者结合起来。我有不同的按钮,比如不同年份的菜单。每个查询都会查询不同的年份并显示出来。

谢谢

1 个回复
SO网友:ifdion

要将请求Ajaxify化,需要两个部分,一个连接到wp\\u admin\\u ajax(如果希望wp\\u admin\\u ajax\\u nopriv可供未登录用户使用)的php函数和一个请求ajax的JavaScript。

PHP

add_action(\'wp_ajax_getpost_by_year\',\'process_getpost_by_year\');
add_action(\'wp_ajax_nopriv_getpost_by_year\',\'process_getpost_by_year\');

function process_getpost_by_year(){
    $year = $_REQUEST[\'year\'];

    $args = array(
            \'post_type\' => \'post\',
            \'ignore_sticky_posts\' => 1,
            \'year\'  => $year,
    );

    $the_query = new WP_Query( $args );

    wp_send_json($the_query );

JavaScript

$.ajax({
    url: \'your-wordpress-site.com/admin-ajax.php\',
    data: {
        year: year
        action: \'getpost_by_year\'
    },
})
.done(function(the_query) {
    // do stuff with the query result here
    console.log(the_query);
});
别忘了更新your-wordpress-site.com 到您的网站url,year 变量,以及

结束

相关推荐

通过wpQuery限制帖子数量

我们假设一个类别有1000篇文章,我们可以使用下面的代码显示每页10篇文章,wp pagenavi将显示100页,其中链接超过1000篇文章。<?php query_posts($query_string.\"&showposts=10&orderby=date&order=ASC\") ?> 我有没有办法只显示100篇最近的帖子,而隐藏剩下的900篇帖子,因为它们可能太旧了?我用了数字键,但没用。我的代码如下:<?php query_posts($qu