2017-10-21 81 views
0

所以我加入重写规则,我们的WordPress的网站,通过使用 $target = 'index.php?' . $this->post_type . '=' . $title; $mapping = $title . '/?$'; add_rewrite_rule ($mapping, $target, 'top'); 这工作正常,我可以看到在WordPress重写规则的插件。 但是,当我转到URL时,例如www.foo.com/my-new-page,我将301重定向回到www.foo.com/。WordPress的add_rewriter_rule在301重定向结果

我想知道这个301被触发的位置。在添加页面后,我已经刷新了规则,自定义帖子类型已注册,但某些内容并不令人满意。 好消息是,如果我例如去my-new-page2不存在,我马上用404

我使用的是基于木星主题担任我没有得到一个404,但我也试了一下与标准的Wordpress 2017主题。还是同样的问题。也有没有任何插件活动,这与我有任何关系(我认为)。

有没有人有在哪里可以搜索的建议?

+0

_“好消息是我没有得到一个404” _ - 这可能只是意味着映射部分作品,但不是目标。你确定传递post类型,因为_parameter name_是将这个传递给index.php的正确方法吗?根据https://codex.wordpress.org/WordPress_Query_Vars,我假设你需要传递_two_参数,帖子类型为'post_type',帖子标题为'name'。 – CBroe

+0

好问题。在我注册一个名为'apptizer'的post_type之前,我使用了这个方法,然后我注册了像'([^ \ /] +)这样的规则?\ /?auth - > \t index.php?apptizer = auth'。这将允许我去'/ auth',它会为apptizer post_type加载一个特定的模板,它将引导一个单页面应用程序进行登录。这像一个魅力。所以我现在正在尝试相同的方式,注册'prospa_job' post_type并注册job_urls,比如'account-manager /?$ - > index.php?prospa_job = account-manager'。我会看看如果我在URL中添加post_type会发生什么。 – Mattijs

+0

刚刚尝试过'index.php?post_type = prospa_job&name = account-manager',它仍然会触发一个301.我也看到了像'employees_category /([^ /] +)/ feed /(feed | rdf | rss | rss2 | atom)/?$ \t index.php?employees_category = $ matches [1]&feed = $ matches [2]'所以我最初做的工作。只需要找到301的原因。 – Mattijs

回答

0

好的,我想出了问题所在。我在我的构造函数调用中注册了custom_post类型,这很早。

通过在构造函数中添加一个wp_loaded钩子,它在正确的时刻执行,不会导致301重定向。

add_action('wp_loaded', function() { 
    $this->register_post_types($this->post_type, true, $this->post_label); 

}); 

所以只是为了确认,这是很好注册的重写规则作为

$target = 'index.php?' . $this->post_type . '=' . $title; 
$mapping = '^' . $title . '/?$'; 
add_rewrite_rule ($mapping, $target, 'top');