获取过去24小时内的帖子,并通过GD星级对它们进行排序

时间:2012-02-15 作者:user350230

我试图在过去24小时内使用GD星级对帖子进行排序。我有两个独立的查询,但我不知道如何合并它们。

          function filter_where($where = \'\') {
            //posts in the last 24 Hours
            $where .= "AND post_date > \'" . date(\'Y-m-d H:i:s\', strtotime(\'-24 hours\')) . "\'";
            return $where;
          }
        add_filter(\'posts_where\', \'filter_where\');
        query_posts($query_string);
以及

query\\u posts(\'gdsr\\u sort=拇指&posts\\u per\\u page=10\');

我不知道如何使用GD-Star对过去24小时的帖子进行排序,但这两个查询单独运行时效果非常好。谢谢

2 个回复
SO网友:Stephen Harris

这个posts_where 筛选SQL语句的“WHERE”部分,而不是查询字符串。所以

$where .= "&post_date > \'".date(\'Y-m-d H:i:s\', strtotime(\'-24 hours\'))."\'";
应该是

$where .= " AND post_date > \'".date(\'Y-m-d H:i:s\', strtotime(\'-24 hours\'))."\'";
此外,由于此钩子是为每个查询(管理和公共端)触发的,因此您应该使用一些逻辑,仅在需要时附加自定义where语句。

或者,您可以在查询之前添加过滤器,然后再次删除:

add_filter( \'posts_where\', \'filter_where\' );
$query_string =\'gdsr_sort=thumbs&posts_per_page=10\';
query_posts( $query_string );
remove_filter( \'posts_where\', \'filter_where\' );
See related Codex page.

SO网友:Scott

未测试,因为我没有安装插件。但我认为这是一种更好的方法,而不是使用query_posts()

global $wp_query;
// Get the existing query and add in extra query args
$query = array_merge( $wp_query->query, array( \'gdsr_sort\' => \'thumbs\', \'posts_per_page\' => 10 ) );
// Apply our filter
add_filter( \'posts_where\', \'last_24_hours_filter_where\' );
// Do our new query
$wp_query = new WP_Query($query);
// Remove the filter so not to effect anything else
remove_filter( \'posts_where\', \'last_24_hours_filter_where\' );


function last_24_hours_filter_where($where = \'\') {
    // Alter query to only return posts in the last 24 hours
    return $where . " AND post_date > \'" . date( \'Y-m-d H:i:s\' , strtotime( \'-24 hours\' ) ) . "\'";
}

结束

相关推荐

如果会话为空,是否运行QUERY_POST?

当我的页面第一次加载时,即会话为空,我在运行query\\u帖子时遇到问题。当页面第一次加载且会话为空时,将运行以下代码: <?php $id = 106; if ((empty($_SESSION[\'r1\']))){ echo \"This Line Prints\"; query_posts(\"cat=-.\'$id\'&\".$query_string);&#

获取过去24小时内的帖子,并通过GD星级对它们进行排序 - 小码农CODE - 行之有效找到问题解决它

获取过去24小时内的帖子,并通过GD星级对它们进行排序

时间:2012-02-15 作者:user350230

我试图在过去24小时内使用GD星级对帖子进行排序。我有两个独立的查询,但我不知道如何合并它们。

          function filter_where($where = \'\') {
            //posts in the last 24 Hours
            $where .= "AND post_date > \'" . date(\'Y-m-d H:i:s\', strtotime(\'-24 hours\')) . "\'";
            return $where;
          }
        add_filter(\'posts_where\', \'filter_where\');
        query_posts($query_string);
以及

query\\u posts(\'gdsr\\u sort=拇指&posts\\u per\\u page=10\');

我不知道如何使用GD-Star对过去24小时的帖子进行排序,但这两个查询单独运行时效果非常好。谢谢

2 个回复
SO网友:Stephen Harris

这个posts_where 筛选SQL语句的“WHERE”部分,而不是查询字符串。所以

$where .= "&post_date > \'".date(\'Y-m-d H:i:s\', strtotime(\'-24 hours\'))."\'";
应该是

$where .= " AND post_date > \'".date(\'Y-m-d H:i:s\', strtotime(\'-24 hours\'))."\'";
此外,由于此钩子是为每个查询(管理和公共端)触发的,因此您应该使用一些逻辑,仅在需要时附加自定义where语句。

或者,您可以在查询之前添加过滤器,然后再次删除:

add_filter( \'posts_where\', \'filter_where\' );
$query_string =\'gdsr_sort=thumbs&posts_per_page=10\';
query_posts( $query_string );
remove_filter( \'posts_where\', \'filter_where\' );
See related Codex page.

SO网友:Scott

未测试,因为我没有安装插件。但我认为这是一种更好的方法,而不是使用query_posts()

global $wp_query;
// Get the existing query and add in extra query args
$query = array_merge( $wp_query->query, array( \'gdsr_sort\' => \'thumbs\', \'posts_per_page\' => 10 ) );
// Apply our filter
add_filter( \'posts_where\', \'last_24_hours_filter_where\' );
// Do our new query
$wp_query = new WP_Query($query);
// Remove the filter so not to effect anything else
remove_filter( \'posts_where\', \'last_24_hours_filter_where\' );


function last_24_hours_filter_where($where = \'\') {
    // Alter query to only return posts in the last 24 hours
    return $where . " AND post_date > \'" . date( \'Y-m-d H:i:s\' , strtotime( \'-24 hours\' ) ) . "\'";
}

相关推荐

如何读取WordPress$Query关联数组(散列)键的值

WordPress编程新手(来自更为传统的环境),并试图了解其一些“独特”特性。我们的网站上有一个目录页,此代码驻留在functions.php, 如果条件为true,则调整结果。if( $query->is_post_type_archive( \'directory\' ) ){ ...//do stuff } 我想知道如何获取is_post_type_archive 这就是“目录”当我对值使用测试时。。。var_dumb($query->is_post