如何获取用于URL重写的Page_id或如何使用Page Slug来调用页面?

时间:2015-05-21 作者:Daniel Klose

我只想创建一个url重写,它接受第三个参数并将其与相应的页面相匹配,而忽略其他两个参数。

domain.com/argument1/argument2/page-slug = \'index.php?page_id=XXX\';
是否可以通过页面的slug而不是ID来调用页面,或者我可以基于页面slug以某种方式生成ID?

更新时间:

实际上,我现在在这方面做得更进一步了:

add_filter(\'rewrite_rules_array\', \'mmp_rewrite_rules\');

function mmp_rewrite_rules($rules) {
   $newRules  = array();
   $newRules[\'bus-tours/(.+)/(.+)/(.+)/?$\'] = \'index.php?bus-tours=$matches[3]\';
   $newRules[\'(.+)/?$\']                     = \'index.php?pagename=$matches[1]\';
   //$newRules[\'bus-tours/(.+)/(.+)/?$\']    = \'index.php?pagename=$matches[2]\';

return array_merge($newRules, $rules);
}
这使我能够:

/bus-tours -> and it shows the bus-tours pages.
/bus-tours/California -> and it shows me the child page of bus-tours, which is Calfironia
/bus-tours/california/SanFran/Tourx -> and it shows me the CPT post for TourX
所以,现在还不错。Tho,因为我使用了很多CPT,所以我想修改第一条规则,这样“巴士旅行”就可以用一个变量代替。

$newRules[\'(.+)/(.+)/(.+)/(.+)/?$\'] = \'index.php?$matches[1]=$matches[3]\';
这行不通。有什么帮助吗?

谢谢,丹尼尔

2 个回复
SO网友:Milo

使用pagename 而不是page_id 按slug查询。请注意,如果一个页面是另一个页面的子页面,pagename 必须是页面的完整父/子路径,因为slug只需在分层帖子类型中的每个级别都是唯一的。看见WP_Query 查询变量的完整列表。

SO网友:Dillonsmart

您可以尝试选择$post_id 哪里$page_name = $page_name

结束

相关推荐

使用AJAX从表单传递更新的AID值

我正在wordpress中工作,每次按下提交按钮时,我都想从表单中获取aid字段的更新值。有两个提交按钮,我希望id与单击的行一致HTML表单(用php代码动态显示)foreach( $results as $result ) { $form.= \'<form id=\"voteform\" action=\"\" method=\"post\">\'; $form.= \"<input id=\'aid\' name=\'aid\' type=\'text\' val