我想设置我的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;
}
最合适的回答,由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\');