Wordpress简单重写规则不起作用

Wordpress简单重写规则不起作用,wordpress,Wordpress,我试图在Wordpress中创建一个重写规则来创建指向搜索结果的直接链接 我正在使用一个名为“object”的自定义帖子类型 我的结果页面位于以下url: 我想创建这种URL来指向新对象的列表: 重写的查询必须是: 然后,我将能够使用$\u GET['filter']值来查询我的对象(meta\u query) 我的问题 我已尝试使用以下代码来解决此问题: add_rewrite_tag('%filter%','([^&]+)'); add_rewrite_rule('objects/n

我试图在Wordpress中创建一个重写规则来创建指向搜索结果的直接链接

我正在使用一个名为“object”的自定义帖子类型

我的结果页面位于以下url:

我想创建这种URL来指向新对象的列表:

重写的查询必须是:

然后,我将能够使用$\u GET['filter']值来查询我的对象(meta\u query)

我的问题

我已尝试使用以下代码来解决此问题:

add_rewrite_tag('%filter%','([^&]+)');
add_rewrite_rule('objects/new/','objects/?filter=new','top');
.htaccess看起来是这样的:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^objects/new/ /objects/?filter=new [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
有人能告诉我为什么Wordpress试图检索附件吗? 我的重写规则有问题吗?还是我遗漏了什么


提前感谢您的帮助

需要将重写规则放置为

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^objects/new(.*)$ /objects/?filter=new [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

重新启动发动机
重写基/
重写规则^objects/new(.*)$/objects/?filter=new[L]
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]

需要将重写规则放置为

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^objects/new(.*)$ /objects/?filter=new [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

重新启动发动机
重写基/
重写规则^objects/new(.*)$/objects/?filter=new[L]
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]

使用此插件,当您点击url时,它将帮助您分析哪个规则起作用。您可以创建新的重写规则,并可以在此处检查它们是否起作用

无需在wordpress中编写任何内容,因为wordpress本身有一个wp_rewrite类来管理所有重写规则

尝试使用几个重写规则,并相应地设置规则优先级。因为列表中上面提到或列出的规则将首先匹配,如果在上面找到匹配项,wordpress将忽略下面列出的规则

我已经用这个插件和它的工作方式为我想。在这里附加截图

使用此插件,当您点击url时,它将帮助您分析哪个规则起作用。您可以创建新的重写规则,并可以在此处检查它们是否起作用

无需在wordpress中编写任何内容,因为wordpress本身有一个wp_rewrite类来管理所有重写规则

尝试使用几个重写规则,并相应地设置规则优先级。因为列表中上面提到或列出的规则将首先匹配,如果在上面找到匹配项,wordpress将忽略下面列出的规则

我已经用这个插件和它的工作方式为我想。在这里附加截图

好的, 我终于找到了实现这一目标的方法

以下是我添加到主题中的代码:

function custom_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        'objects/(.+)'  =>  'index.php?page_id=27&filtre=' . $wp_rewrite->preg_index(1),
    );
    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
其中27是我想用重写的URL访问的“/objects”页面的Wordpress ID,并且:

function custom_wp_querystring() {
    add_rewrite_tag('%filtre%','([^&]+)');
}
为了告诉Wordpress,我需要使用一个名为“filtre”的自定义查询变量

最后一个函数必须在初始化操作中添加:

add_action( 'init', 'custom_wp_querystring');
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );
重要的是要知道,在我的页面模板(在我的示例中是ID为27的模板)中,如果我想测试查询变量,就不可能进行这种测试:

if ( isset ( $_GET['filtre'] ) ) { ... }
GET变量由于Wordpress重定向而“隐藏”,您必须执行以下操作:

if ( isset( $wp_query->query_vars['filtre'] ) ) { ... }
嗯, 我终于找到了实现这一目标的方法

以下是我添加到主题中的代码:

function custom_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        'objects/(.+)'  =>  'index.php?page_id=27&filtre=' . $wp_rewrite->preg_index(1),
    );
    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
其中27是我想用重写的URL访问的“/objects”页面的Wordpress ID,并且:

function custom_wp_querystring() {
    add_rewrite_tag('%filtre%','([^&]+)');
}
为了告诉Wordpress,我需要使用一个名为“filtre”的自定义查询变量

最后一个函数必须在初始化操作中添加:

add_action( 'init', 'custom_wp_querystring');
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );
重要的是要知道,在我的页面模板(在我的示例中是ID为27的模板)中,如果我想测试查询变量,就不可能进行这种测试:

if ( isset ( $_GET['filtre'] ) ) { ... }
GET变量由于Wordpress重定向而“隐藏”,您必须执行以下操作:

if ( isset( $wp_query->query_vars['filtre'] ) ) { ... }

几个问题1。这工作正常吗-2。-这对你是否合适?嗨,普拉莫德,我不明白你问这些问题是什么意思?domain.com/objects是一个现有的WP页面,domain.com/objects/filter/new对我来说不是一个好的解决方案,因为我不想在最终url中使用“filter”(我想要domain.com/objects/new)几个问题1。这工作正常吗-2。-这对你是否合适?嗨,普拉莫德,我不明白你问这些问题是什么意思?domain.com/objects是一个现有的WP页面,domain.com/objects/filter/new对我来说不是一个好的解决方案,因为我不想在最终url中使用“filter”(我想要domain.com/objects/new)Hi,即使这个规则高于wordpress常规规则,wordpress也会查询“attachement”Hi,即使这个规则高于wordpress常规规则,Wordpress正在查询“附件”嗨,谢谢!这个插件看起来不错,但我从未发现如何删除添加的规则:(我使用Debug Bar查看分析查询。不幸的是,我的问题不是这个,我知道如何添加重写规则,我只是不知道如何正确地构造规则来实现我想要的:SHi,谢谢!这个插件看起来不错,但我从未发现如何删除添加的规则:(我使用Debug Bar查看分析查询。不幸的是,我的问题不是这个,我知道如何添加重写规则,我只是不知道如何正确地构造规则以实现我的目标:SYou正在通过编码添加规则,而插件直接在db上添加代码……)谢谢,使用
index.php?pagename=some page name
规则时没有运气,使用
index.php?page_id=123
一切正常。您正在通过编码添加规则,而插件直接在db上添加代码:)谢谢,我们使用
index.php?pagename=some page name
规则时运气不佳,使用
index.php?page_id=123
一切正常。