URL Rewrite - Page Archive

时间:2017-07-24 作者:addedlovely

我正在尝试进行自定义URL重写,但遇到问题。

我有一个名为“Program”的页面,它使用自定义查询列出一个名为“event”的帖子类型。我想在url中传递一个月和日变量,例如。/programme/09/31

然后,我将使用月/日变量来更新自定义查询。(由于事件跨越多天,“事件”的内置存档将无法工作)。

当前尝试将重写结果添加到404中。我可以使用内置的“m”和“d”变量,还是需要注册新的URL变量?

谢谢

伊恩。

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

您需要在theme中添加以下两个函数functions.php 或者在插件的php文件中

function func_rewrites_init(){
    add_rewrite_rule(
        \'programme/(\\d+)/(\\d+)/?$\',
        \'index.php?pagename=programme&pmonth=$matches[1]&pdate=$matches[2]\',
        \'top\' );
}
add_action(\'init\', \'func_rewrites_init\');


function func_query_vars( $query_vars ){
    $query_vars[] = \'pmonth\';
    $query_vars[] = \'pdate\';
    return $query_vars;
}
add_filter( \'query_vars\', \'func_query_vars\' );
pagename 上述代码中的值必须符合模板名称。如果你有Page 带slugprogramme 模板名称将为page-programme.php. 在该模板文件中,您可以访问月份和日期

$pmonth = get_query_var(\'pmonth\');
$pdate = get_query_var(\'pdate\');
一件重要的事情doc:

重要提示:修改规则后,不要忘记刷新和重新生成重写规则数据库。从WordPress管理屏幕中,选择设置->永久链接,只需单击保存更改而不做任何更改。

结束