另一个选项是挂接wp并检查包含动态pagename的404:
function wpse27761_dynamic_page() {
global $wp, $wp_query;
if($wp_query->is_404 ):
if( strpos($wp->request, \'mypagename\') !== false ):
$wp_query->is_404 = false;
//create a post object with your desired output
endif;
endif;
}
add_action(\'wp\', \'wpse27761_dynamic_page\');
但可以说这更复杂,我个人会像你现在这样做,尽管我通常只是创建一个页面细节。php模板,因此您不必为页面显式设置模板。
至于重写,根据您当前的方案,它非常简单:
function wpse27657_rewrite(){
add_rewrite_rule(\'details/([^/]*)/?\', \'index.php?pagename=details&pid=$matches[1]\', \'top\');
}
add_action( \'init\', \'wpse27657_rewrite\' );
function wpse27657_query_var( $query_vars ){
$query_vars[] = \'pid\';
return $query_vars;
}
add_filter( \'query_vars\', \'wpse27657_query_var\' );
这将路由
/details/whatever/
使用pid query var集合查看您的pagename详细信息。只需确保访问永久链接设置页面并保存,以便添加这些新规则。
get_query_var(\'pid\')
将在模板中返回查询变量。