在定制页面模板帖子上按ASC、DESC、标题、日期从URL排序

时间:2013-11-04 作者:Saiful Islam

我有一个自定义模板的页面。在这个模板中,我索引了一个类别的所有帖子,并进行了更多的修改。我知道我可以通过创建特定于类别的模板来做到这一点,但这是不同的,我不想为每个类别创建基于类别的模板。

一切都很好,但我正试图通过这个自定义页面模板帖子的URL实现帖子排序。ASC order by URL在类别页面上工作,但不在自定义页面模板上工作。

示例(带有自定义页面):http://www.projuktiteam.com/illustrator-tutorial/?order=asc (不工作)示例(带类别页):http://www.projuktiteam.com/category/video-tutorials/illustrator-tutorial/?orderby=asc (正在工作)我也可以从loop订购此自定义页面上的ASC帖子,但我想通过URL来完成此操作。因为我想让用户按ASC、DESC、标题、日期等对帖子进行排序。

<?php get_header(); ?>

    <iframe class="featured-trailer" width="950" height="534" src="//www.youtube.com/embed/<?php echo get_post_meta( get_the_ID(), \'trailer\', true ) ?>" frameborder="0" allowfullscreen></iframe>

<?php get_template_part(\'cat-featured\'); ?>

</div><!-- end .carousel -->

ID,“tut类别”,正确);?>

<div id="content" role="main"><?php  ?> 
<div class="loop-header">
            <h1 class="tut-cat-title"><?php echo get_the_title(); ?></h1>
            <div class="tut-cat-count"><?php echo \'Total Posts = \' . $category->count; ?></div>
        </div><!-- end .loop-header --> 
<?php               

    if (have_posts()) :     
        query_posts("category_name=$tutcatname&showposts=25");  
        get_template_part(\'loop-actions\');          
        get_template_part(\'loop-content\');
        get_template_part(\'loop-nav\');

    else :
        get_template_part(\'loop-error\');
    endif; 

    wp_reset_query();
?>
</div><!-- end #content -->

1 个回复
SO网友:Milo

当您运行其他查询时,WordPress不会自动解析get vars,这只适用于主查询。您必须手动获取和添加它们。

而且don\'t use query_posts, 使用WP_Query 相反

$args = array(
    \'category_name\' => $tutcatname,
    \'posts_per_page\' => 25,
);

if( isset( $_GET[\'order\'] ) ){
    $args[\'order\'] = $_GET[\'order\'];
}

$query = new WP_Query( $args );

结束

相关推荐

WP_QUERY ORDERBY POST__IN在循环中保持无效

我试图为主页查询一个自定义帖子数组,试图维护数组中给定的顺序。在某种程度上,这很好,WordPress可以找到帖子,但在循环中,顺序又被混淆了。首先,我使用pre_get_posts 钩子以更改主页上的主查询,如下所示:if ( is_home() && $query->is_main_query() ) { $query->set( \'post_type\', array( \'post\', \'page\', \'product\' ) );