最新帖子的URL重写

时间:2011-10-14 作者:dnagirl

我想设置我的WP,以便URL以/last 将返回该组帖子中最近的帖子。例如/last 返回任何类型的最新帖子,archives/category/trivia/last 将返回分类为琐事的最新帖子,以及archives/LoomSong/last 将返回最新的自定义帖子类型=“LoomSong”。

我想我需要添加重写规则,但我很不确定正则表达式应该是什么。到目前为止,我的情况是:

add_action( \'init\', \'ASHmostrecent_init\' );
function ASHmostrecent_init(){
    add_rewrite_rule( \'last/?$\', \'WHAT DO I PUT HERE?\');
}

add_filter( \'query_vars\', \'ASHmostrecent_query_vars\' );
function ASHmostrecent_query_vars( $query_vars ){
    $query_vars[] = \'ASHmostrecent_filter\';
    return $query_vars;
}

3 个回复
最合适的回答,由SO网友:Manny Fleurmond 整理而成

add_action( \'init\', \'ASHmostrecent_init\' );
function ASHmostrecent_init(){
    add_rewrite_rule( \'last/?$\', \'index.php?post_type=post&posts_per_page=1\');
}
查询已经从最新的帖子拉到最旧的帖子,所以您所要做的就是限制一个帖子返回的内容。posts_per_page 这样做;限制1将为您提供最新的帖子。编辑post_type 照着

SO网友:Jonathan Liuti

Wordpress的默认行为已经是按日期降序返回最新项目。我不太明白使用这个“/最后一个”参数的意义。也许你只是想按照曼尼·弗勒蒙德的建议限制结果的数量?

如果是这种情况,我们需要解决两个不同的问题:

仅在/最后一个url上处理每个帖子类型的显示

  • 使用/最后一个扩展名时,仅显示一组最新项目
  • 如果你选择重写的方式,你必须重写你想要支持的wordpress的每一条规则,而且有很多规则。然后添加过滤器,根据url和检索到的参数实际更改查询的行为。

    你还必须处理一个名为“last”的帖子/页面或类别的可能性。

    这不是一件容易做到的事情,它需要大量的工作,我不能体面地提供一个工作的例子,因为它将涉及时间。

    一些参考可能会有所帮助:post_limits filter,Justin Tadlock article

    祝你好运

    SO网友:Alex Sancho

    您可以尝试这种方法,其想法是在主题中使用自定义模板,处理基于url关键字的自定义查询

    <?php
    
    function flush_rewrite_rules()
    {
        global $pagenow, $wp_rewrite;
    
        if ( \'themes.php\' == $pagenow && isset( $_GET[\'activated\'] ) )
            $wp_rewrite->flush_rules();
    }
    
    function add_rewrite_rules($wp_rewrite)
    {
        $new_rules = array(\'(.+)/last\' => \'index.php?last=true\';
        $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    }
    
    function add_query_vars($qvars)
    {
        $qvars[] = \'last\';
        return $qvars;
    }
    
    function template_redirect_file()
    {
        global $wp_query;
    
        if ($wp_query->get(\'last\'))
        {
            if (file_exists(TEMPLATEPATH . \'/last.php\'))
            {
                include(TEMPLATEPATH . \'/last.php\');
                exit;
            }
        }
    }
    
    add_action(\'load-themes.php\', \'flush_rewrite_rules\' );
    add_action(\'generate_rewrite_rules\', \'add_rewrite_rules\');
    add_filter(\'query_vars\', \'add_query_vars\');
    add_action(\'template_redirect\', \'template_redirect_file\');
    

    结束

    相关推荐