Archive not sorting correctly

时间:2014-02-13 作者:Kevin K

我有一个名为“cif事件”的自定义帖子类型,我想按wpcf开始时间中的值进行排序。我在函数中添加了以下内容。php:

add_filter(\'pre_get_posts\', \'set_order_for_archives\');

function set_order_for_archives($q) {
  if ($q->is_post_type_archive(\'cif-groups\')) {
    $q->set(\'orderby\', \'title\');
    $q->set(\'order\', \'ASC\');
    $q->set(\'posts_per_page\', 300);
  } elseif ($q->is_post_type_archive(\'cif-events\')) {
    $q->set(\'orderby\', \'wpcf-start-time\');
    $q->set(\'order\', \'ASC\');
    $q->set(\'posts_per_page\', 300);
  } elseif ($q->is_post_type_archive(\'cif-venues\')) {
    $q->set(\'orderby\', \'title\');
    $q->set(\'order\', \'ASC\');
    $q->set(\'posts_per_page\', 300);
  }
  return $q;
}
但是,排序不正确。我想它是按邮寄日期排序的。不过,每页帖子的设置似乎是正确的。

2 个回复
SO网友:Milo

看看orderby parameters for WP_Query 查看所有可用的有效值。

如果wpcf-start-time 是元密钥,那么orderby 应该是meta_value, 这也需要您设置meta_key 参数告诉WP您要在哪个元键上订购-

} elseif ($q->is_post_type_archive(\'cif-events\')) {
    $q->set(\'orderby\', \'meta_value\');
    $q->set(\'meta_key\', \'wpcf-start-time\');
    $q->set(\'order\', \'ASC\');
    $q->set(\'posts_per_page\', 300);
}

SO网友:Rarst

根据Order & Orderby Parameters orderby 不只是接受密钥名称。

您需要设置orderby\'meta_value\' 字符串和meta_key 到键名称。

结束

相关推荐

Order by meta value

我有一个自定义的帖子类型,它有一个名为deck-number 客户希望按组编号对结果进行排序。仅供参考,甲板编号为数值。所以我使用了像bellow这样的查询。get_posts(\'post_type=decks&nopaging=true&meta_key=deck-number&orderby=meta_value&order=ASC\'); 我面临的问题是,我得到的结果排序是1、10、11、12、2、3、4、5、6、7、8、9。我需要你的建议来解决。谢谢