WordPress自定义帖子类型在重新安装主题时断开固定链接

时间:2010-10-21 作者:jnthnclrk

这是一个相当奇怪的问题。我正在我的主题功能中创建WordPress自定义帖子类型。php文件使用以下格式:

add_action(\'init\', \'product_register\');

function product_register() {
$args = array(
    \'label\' => __(\'Products\'),
    \'singular_label\' => __(\'Product\'),
    \'public\' => true,
    \'show_ui\' => true,
    \'capability_type\' => \'post\',
    \'hierarchical\' => false,
    \'rewrite\' => true,
    \'supports\' => array(\'title\', \'editor\', \'thumbnail\')
);

register_post_type( \'product\' , $args );
}
这为我的产品提供了以下url结构:http://www.mywebsite.com/products/product-name.

然而,如果我切换到另一个主题(二十十),然后切换回WordPress,就会忘记永久链接,现在当我浏览到上面的URL时,就会得到404页。

我注意到的一件非常奇怪的事情是,我可以通过浏览admin中的Settings->Permalinks来解决这个问题。这会暂时修复问题,直到下一个主题卸载/重新安装。

还有其他人有类似的问题吗?

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

新的permalink结构仅在以下情况下保存WP_Rewrite::flush_rules() 被调用。因为这是一个昂贵的操作(计算新规则并将其保存到数据库),所以不应该在每个init 打电话,但只有当你改变结构时。但是,必须在每个init 调用,因为它保存在内存中的PHP数组中,而不是数据库中(这就是为什么在切换主题时它忘记了自定义贴子:permalink结构仍然存在,但引用了未加载的自定义贴子类型,从而给出了一个错误)。

结束

相关推荐