Wordpress:单击按钮/链接时动态排序内容

时间:2012-03-24 02:18:45

标签: php wordpress

我需要一些功能方面的帮助。我正在尝试创建一个可以动态排序的帖子页面,以显示用户希望看到的帖子

使用场景:

在邮政中,有4个标题ei:标题A,标题B,标题C和标题D.

标题A = CARAMOAN A LOOK BACK;

标题B =目的地:PUERTO PRINCESA;

标题C =可以让你看到一个免费的三轮车票;

标题D =在菲律宾旅行时要记住的五件事;

现在有了这个我想排序:

最多评论

观看次数最多

按字母顺序排列 - 升序

用户可以通过单击看起来像这样的按钮来更改页面顺序。

enter image description here

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用查询字符串。

我假设您正在查看类别页面。

首先,我们将按钮添加到类别页面

<a href="?sortby=comment>Sort by Comment</a>
<a href="?sortby=views>Sort by Views</a>
<a href="?sortby=alphabet>Alphabetical</a>

这会在页面的网址中添加查询字符串,现在位于类别页面的顶部,我们将添加以下代码:

<?php
if (array_key_exists("sortby", $_GET) === true)
{
    $newQuery = sortIt($_GET['sortby']);
}
?>

之后我们将创建一个函数,为 functions.php 模板中的帖子排序

由于我们有3种排序类型,我们可以使用switch case或if-else语句。我会在这里使用if-else。

<?php
function sortIt($sortType)
{
    global $wp_query;
    $cat_ID = get_query_var('cat');

    if (strcmp($sortType, 'comment') == 0 )
    {
        $newQuery = new WP_Query( array( 'orderby' => 'comment_count' , 'cat' => $cat_ID, 'posts_per_page' => '10') );
    }

    if (strcmp($sortType, 'views') == 0 )
    {
        $newQuery = new WP_Query( array( 'meta_key' => 'views', 'orderby' => 'meta_value_num', 'order'=> 'DESC', 'cat' => $cat_ID, 'posts_per_page' => '10') );
    }

    if (strcmp($sortType, 'alphabetical') == 0 )
    {
        $newQuery = new WP_Query( array( 'orderby' => 'title' , 'cat' => $cat_ID, 'posts_per_page' => '10') );
    }

    return $newQuery;
}
?>

Wordpress没有原生视图计数,我使用了一条我读过here的指令。

由于我们拥有所有必需的函数和变量,因此我们需要覆盖查询。

您将编辑循环,如下所示:

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

就是这样:))