按用户元对自定义帖子类型进行排序

时间:2013-03-26 作者:annabwashere

我已经设置了一个概要文件(CPT)目录,我正试图找到一种方法,根据帖子作者的上次登录时间对结果进行排序。目标是通过将最近登录的作者的概要文件推到查询结果的顶部来奖励他们,从而提高他们概要文件的可见性。

我知道如何使用自定义字段进行查询,但我不确定如何使用usermeta进行查询。

我设置的功能包括:

// Catch the time they login and save it
function set_last_login($login) {
  $user = get_userdatabylogin($login);
  update_usermeta( $user->ID, \'last_login\', current_time(\'mysql\') );
}
add_action(\'wp_login\', \'set_last_login\');

// Display the time
function get_last_login($user_id) {
  $last_login = get_user_meta($user_id, \'last_login\', true);
  $date_format = get_option(\'date_format\') . \' \' . get_option(\'time_format\');
  $the_last_login = mysql2date($date_format, $last_login, false);
  return $the_last_login;
}

// Show friendly last login
function lastseen() {
    $lastseen = get_last_login(get_the_author_meta(\'ID\'));
    $last_login_unix = strtotime( $lastseen );
    echo human_time_diff( $last_login_unix );
} 
我的页面上的查询是:

   $temp = $wp_query;
   $wp_query= null;
   $wp_query = new WP_Query();
   $wp_query->query(\'post_type=teacher\'.\'&paged=\'.$paged);
如何将usermeta排序(例如上次登录)添加到此查询?

1 个回复
SO网友:Max Yudin

您必须添加meta_key, orderbyorder Codex中描述的查询参数:Order & Orderby Parameters:

<?php
$args = array(
    \'post_type\' => \'teacher\',
    \'paged\' => $paged,
    \'meta_key\' => \'last_login\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'DESC\'
);
$my_custom_query = new WP_Query($args);
另请注意,我不使用$wp_query 变量来存储查询。看见WP_Query Usage 举例说明原因。

结束

相关推荐

Sorting a query Field by date

我有我的网站,目前是显示大学开放日,目前他们是按页面标题的顺序排序,而实际上我更希望他们按日期排序,最早排在第一,最晚排在最后。下面是我到目前为止的代码,我似乎无法确定如何按日期顺序对它们进行排序,有什么帮助吗?<?php query_posts(\'post_type=page&post_parent=2&posts_per_page=-1&orderby=title&order=ASC\'); ?> <?php if ( have_posts(