我花了很长时间才找到一个很好的解决方案,可以通过两个自定义元键来订购自定义帖子类型。当我最终让它工作时,我发现分页已经不起作用了。我尝试了在线找到的几十个不同的代码片段,但都没有修复我的唯一性。如果我能得到任何帮助,我将不胜感激,或者如果你认为重写可以奏效,请为我提供一个更好的方法来做到这一点的例子。
我有一个名为“剧集”的自定义帖子类型。这些都有我想排序的季节和集号。
存档剧集。php
if ( get_query_var(\'page\') ) { $paged = get_query_var(\'page\'); }
else { $paged = 1; }
$args = array(
\'post_type\' => \'episodes\',
\'paged\' => $paged,
\'posts_per_page\' => 10,
\'orderby\' => \'meta_value\',
\'meta_key\' => \'season_number\',
\'meta_query\' => array(
array(
\'key\' => \'season_number\',
\'value\' => \'\',
\'compare\' => \'LIKE\'
),
array(
\'key\' => \'episode_number\',
\'value\' => \'\',
\'compare\' => \'LIKE\'
)
));
query_posts($args);
if ( have_posts() ) : ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
[...]
功能。php
add_filter(\'posts_orderby\', \'edit_posts_orderby\');
function edit_posts_orderby($orderby_statement) {
if(is_post_type_archive(\'episodes\')) {
$orderby_statement = "mt1.meta_value, mt2.meta_value DESC";
return $orderby_statement;
}
}
我知道在归档页面上发布Query\\u帖子不是最佳做法,但我无法使用pre\\u get\\u帖子进行排序。如果有人知道如何在pre\\u get\\u帖子中重写它,我愿意尝试。我知道我的分页可能会再次工作,只是通过切换,但我只是不知道如何。
谢谢