如何加载基于URL通配符的模板部件?

时间:2018-07-03 作者:Floris

我正在尝试在自定义Wordpress主题中创建一个议程。议程页面上有一个简单的页面议程。php模板,其中包含一些处理议程索引的代码。非常简单。

但现在我想“听”一下包含议程项目详细页面的URL。例如/议程/1/事件名称。

当我访问上述URL时,我得到一个页面未找到错误。当我尝试加载一个基于wordpress的init hook的模板文件时,页面中似乎没有添加任何内容,并且我一直得到一个未找到的页面。

所以。如何加载。php模板文件基于URL通配符,如/agenda/1/event name?因此,我可以显示事件数据,而不会收到404消息。

谢谢

1 个回复
最合适的回答,由SO网友:Floris 整理而成

我在年得到了这个解决方案functions.php, 感谢Wordpress官方文档:https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

首先添加了自定义重写规则,如下所示:

function custom_rewrite_rule() {
    add_rewrite_rule( 
        \'^agenda/([^/]*)/([^/]*)/?\',
        \'index.php?page_id=10&agenda_id=$matches[1]&agenda_name=$matches[2]\',
        \'top\' );
}

add_action( \'init\', \'custom_rewrite_rule\', 10, 0 );
然后需要添加以下内容:

function prefix_register_query_var( $vars ) {
    $vars[] = \'agenda_id\';
    $vars[] = \'agenda_name\';

    return $vars;
}

add_filter( \'query_vars\', \'prefix_register_query_var\' );
现在URL的/agenda/1/event title工作起来很有魅力!并传递所需的变量。

PS: Remember to save the permalinks settings in the backend once again, or this code won\'t work!

结束

相关推荐

如何在ACF中使用single.php创建、阅读和编辑自定义帖子

我有一个WordPress自定义帖子类型product 我现在正在开发用于创建、阅读和编辑这些帖子的前端表单(我正在使用ACF)。我只想用single-product.php 为此目的!有人能在这方面帮助我吗?我已经通过添加基本功能来查看(主机/产品/产品)和编辑帖子(主机/产品/产品?操作=编辑)?操作=编辑链接并显示特定acf_form() 如果$_GET[\"action\"] 是edit 但我也想用这个页面creating new posts!我试图添加new_product 在URL上类似hos