我有一个名为“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;
}
但是,排序不正确。我想它是按邮寄日期排序的。不过,每页帖子的设置似乎是正确的。
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);
}