添加自定义重写规则使用WordPress(Adding custom rewrite rules t

2019-10-18 08:47发布

我的WordPress网站有一个组合,在www.mysite.com/portfolio/ 。 该产品组合的部分和项目都是通过我创建了一个自定义插件管理。 我想访问如个别项目www.mysite.com/portfolio/my-cool-photo并有把“我的酷-照片”到下面的查询字符串?portfolio_item=my-cool-photo ,所以我可以读取它从我的代码。

在插件激活PHP文件,我有这样的代码:

function add_rewrite_rules($wp_rewrite) {
    $new_rules = array(
        'portfolio/(.+)/?$' => 'index.php?&portfolio_item=$1'
    );

    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'add_rewrite_rules');

function query_vars($public_query_vars) {
    $public_query_vars[] = "portfolio_item";

    return $public_query_vars;
}
add_filter('query_vars', 'query_vars');

这增加了重写规则到数组确定。 问题是,它没有做任何事情。 当我去www.mysite.com/portfolio/testing/我得到了“这有点尴尬,是不是?” WordPress的404错误页面。 显然,重定向不工作,那么查询字符串将不会被填补,但只是为了确保我这样做:

global $wp_query, $wp_rewrite;
if ($wp_rewrite->using_permalinks()) {
    $searchKey = $wp_query->query_vars['portfolio_item'];
} else {
    $searchKey = $_GET['portfolio_item'];
}

...果然查询字符串是没有得到通过。

是否有什么我失踪?

Answer 1:

在更新WordPress的重写规则,你需要刷新它们:

http://codex.wordpress.org/Function_Reference/flush_rewrite_rules

您可以选择与冲$hard参数true ,然后你应该能看到.htaccess文件中的重写规则。



Answer 2:

这里是重写URL代码的例子。 希望这将有助于用户。

在此网址像http://www.domainname.com/test-page?urltags=ABCD运行为http://www.domainname.com/test-page/ABCD

<?php
function add_my_rule() {    
    global $wp; 
    $wp->add_query_var('tags');
    add_rewrite_rule('test-page/([^/]*)','index.php?pagename=test-page&urltags=$matches[1]','top');
}
function add_my_tags() {
    add_rewrite_tag('%urltags%', '([^&]+)');
}
add_action('init', 'add_my_rule');
add_action('init', 'add_my_tags', 10, 0);
?>


文章来源: Adding custom rewrite rules to WordPress
标签: wordpress