Ajaxify Post Sort

时间:2017-10-06 作者:Roger Alridge

我这里有一些代码,当您单击某些链接时,它会重新加载页面,并根据我设置的查询数组对我的帖子进行排序。我只是想知道如何让它通过ajax加载和排序,而不是重新加载页面?

以下是我使用的代码:

 <?php 
    $sort= esc_attr($_GET[\'sort\']); 
    if($sort == "title_asc") { $order= "&orderby=title&order=ASC"; } 
    if($sort == "title_desc") { $order= "&orderby=title&order=DESC"; }
    if($sort == "date_desc") { $order= "&orderby=date&order=DESC"; }
    if($sort == "date_asc") { $order= "&orderby=date&order=ASC"; }
    ?>

            <div class="elementsToFilter">
              <ul>
<li><a  href="?sort=title_asc" <?php if ($sort == "title_asc"){ echo \'style="color:gray"\'; } ?>>Title : A - Z</a></li>
<li><a href="?sort=title_desc" <?php if ($sort == "title_desc"){ echo \'style="color:gray"\'; } ?>>Title : Z - A</a></li>
<li><a href="?sort=date_desc" <?php if ($sort == "date_desc"){ echo \'style="color:gray"\'; } ?>>Date : Newest - Oldest</a></li>
<li><a href="?sort=date_asc" <?php if ($sort == "date_asc"){ echo \'style="color:gray"\'; } ?>>Date : Oldest - Newest</a></li>
              </ul>
            </div>

<?php $the_query = new WP_Query( \'cat=3309&posts_per_page=12\'. $order); ?>
    <?php while($the_query->have_posts()): $the_query->the_post(); ?>
                        <?php if($view_type == \'grid\'): ?>
                            <?php get_template_part(\'partials/blog/content-grid\', \'loop\'); ?>
                        <?php else: ?>
                            <?php get_template_part(\'partials/blog/content-list\', \'loop\'); ?>
                        <?php endif; ?>
                    <?php endwhile; ?>

1 个回复
SO网友:Jonathan Ryan Patterson

我绝不是AJAX专家,我只在你需要它的时候使用过它。对于论坛帖子来说,这可能是一个很长的解释。但当我第一次尝试实现同样的目标时,我发现了BrandonBrotsky关于如何使用AJAX过滤自定义帖子类型的优秀YouTube视频系列(5部分)。即使您只过滤常规帖子而不使用ACF,您也应该能够使用他的方法按ASC或DESC顺序按日期或标题过滤帖子。实际上,这应该比他在视频中所做的更容易。

https://www.youtube.com/watch?v=e5tUkHczcVE

我知道这可能不是你所希望的答案,但我想你会发现他的视频在某种程度上有所帮助。

结束