按元关键字的元数过滤查询帖子

时间:2015-05-26 作者:gordie

我知道可以通过meta的数值来过滤查询以订购帖子。例如,我在single 元密钥:

            $query->set(\'meta_key\', \'total_likes\' );
            $query->set(\'orderby\',\'meta_value_num\');
            $query->set(\'order\', \'DESC\');
但我想按最近查看的项目筛选我的查询以订购帖子
为了实现这一点,我将项目被喜欢的时间存储在另一个元键中,即not single.每次添加“time\\u liked”元时,我都会检查其他元以删除那些太旧的元。

这样的事情是否存在;或者我该如何实现它?

            $query->set(\'meta_key\', \'time_liked\' );
            $query->set(\'orderby\', ...); //something like meta_count ?
            $query->set(\'order\', \'DESC\');

1 个回复
SO网友:gordie

使用两个(单个)Post Meta最终发现:

  • likes_log 我在其中保持最新的数组,其中每个条目都是该项目被喜欢的时间。如果条目太旧(此处大于1个月),则会将其删除likes_log_count 其中,我更新了上一个日志中的条目数。

    function update_likes_monthly_count(){
    
        if ( get_post_status($this->post_id) != \'publish\') return;
    
        $log = array();
        $time = current_time( \'timestamp\' );
        $time_remove = strtotime(\'-1 month\',$time); 
    
        if ($existing_log = get_post_meta($this->post_id, \'likes_log\', true)){ //get month log
            $log = $existing_log;
        }
    
        //remove entries that are too old from log metas (multiple)
        foreach ((array)$log as $key=>$log_time){
            if ($log_time <= $time_remove){
                unset($log[$key]);
            }
        }
    
        //update log
        $log[] = $time;
        update_post_meta($this->post_id, \'likes_log\', $log);
    
        //update likes count
        $count = count($log);
        return update_post_meta($this->post_id, \'likes_log_count\', $count );
    }
    
    然后,我可以使用“likes\\u log\\u count”来过滤我的查询!

            $query->set(\'meta_key\', \'likes_log_count\' );
            $query->set(\'orderby\',\'meta_value_num\');
            $query->set(\'order\', \'DESC\');
    

结束

相关推荐

QUERY_var在REGISTER_TASTIONY中有什么作用

如果在register_taxonomy( $taxonomy, $object_type, $args ) 我设置query_var 争论是否属实?我读过here 这query_var (布尔值或字符串)(可选)False要禁用query\\u var,请设置为string以使用自定义query\\u var,而不是默认值$taxonomy,即分类法的“名称”。默认值:$分类法Note: 这个query_var 用于通过直接查询WP_Query 喜欢new WP_Query(array(