自定义发布类型和Query_Posts的页面上的404

时间:2013-04-22 作者:Erica

我花了很长时间才找到一个很好的解决方案,可以通过两个自定义元键来订购自定义帖子类型。当我最终让它工作时,我发现分页已经不起作用了。我尝试了在线找到的几十个不同的代码片段,但都没有修复我的唯一性。如果我能得到任何帮助,我将不胜感激,或者如果你认为重写可以奏效,请为我提供一个更好的方法来做到这一点的例子。

我有一个名为“剧集”的自定义帖子类型。这些都有我想排序的季节和集号。

存档剧集。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帖子中重写它,我愿意尝试。我知道我的分页可能会再次工作,只是通过切换,但我只是不知道如何。

谢谢

1 个回复
SO网友:Fränk

我也遇到过类似的问题,并得出结论,使用pre\\u get\\u posts无法正确地按多个元数据排序。

然而,在您的情况下,解决方案实际上可能非常简单。你所需要做的就是把季号和集号合并成一个数字。

我不知道用户是如何输入这些值的,但如果是通过自定义元框输入的,那么在将自定义元值保存到数据库的函数上就可以轻松地输入这些值。

以这种方式准备好数据后,只需通过pre\\u get\\u posts按meta\\u value\\u num排序即可。这样,您就不必使用query\\u posts(),分页和其他功能将按预期工作。

结束