尝试将类似URL的URL映射到页面

时间:2013-10-02 作者:William Jens

我正在尝试绘制一条路径,例如

/BigOffer12345
到实际页面,以便将数字部分作为参数传递。

/Offers/BigOffer/?id=12345
传入的id最终将用于生成从远程源提取的自定义内容(类似于purl服务)。

我一直在研究重写,但我对WordPress还是新手,我想我在一些基础知识上遇到了困难。这样的事情是否需要在插件中发生,或者是否有另一个接口将其导入WordPress?

1 个回复
SO网友:gmazzap

如果BigOffer 部件是静态的,可以使用重写规则轻松完成:

add_action(\'init\', \'big_offer_rule\');

function big_offer_rule() {
  add_rewrite_rule(\'^BigOffer([0-9]+)/?\',\'index.php?pagename=bigoffer&offerId=$matches[1]\',\'top\');
}

add_filter(\'query_vars\', \'big_offer_vars\');

function big_offer_vars( $vars ) {
  return array_merge($vars, array(\'offerId\') );
}
添加此代码后,you have to flush rules 进入后端的“设置”->“永久链接”部分并保存更改。

之后,您必须使用slug创建一个页面:\'bigoffer\'. 当您键入如下url时,此页面将打开http://example.com/BigOffer12345 数字部分可以用来查看get_query_var(\'offerId\'), 类似于:

add_action(\'template_redirect\', \'big_offer_id\');

function big_offer_id() {
  if ( is_page(\'bigoffer\') ) {
    // do something... following is just an example
    // the function get_the_content_somewhere_by_id does not exist,
    // just imagine is a function that retrieve the page content using the id
    $offerid = get_query_var(\'offerId\');
    global $offer_content;
    $offer_content = get_the_content_somewhere_by_id($offerid);
  }
}
我用过钩子\'template_redirect\' 因此,您在函数中所做的一切都是在页面显示之前完成的。然后,我使用一个全局变量来存储检索到的内容,通过这种方式,在页面模板中,您可以global $offer_content; echo $offer_content;.

“偏离路线”不是真实的代码只是概念的证明。

所有这些代码都可以在自定义插件(建议的位置)中编写,也可以在functions.php 当前主题的。

结束

相关推荐

前端发布,wp_reDirect不起作用,出现‘无法修改标头信息’错误

我正在尝试创建前端发布页面,但有时“wp\\u redirect”无法处理“cannot modify header information”错误。添加数据工作正常,但我不知道为什么有时工作正常而没有错误,有时显示错误。。对不起,我英语不好,请帮帮我。。。我不是程序员,只是懂一些代码而已。。。非常感谢!! if (isset ($_POST[\'post_title\'])) { $title = $_POST[\'post_title\']; } else