不寻常的自定义开机自检404问题(不是永久链接问题)

时间:2011-10-24 作者:Samuel Hulick

我似乎已经用尽了关于这个主题的所有参考资料,但如果这是一篇重复的帖子,我很抱歉。

我有一个问题,任何自定义贴子页面都会显示404。php文件的错误内容,无论使用何种方法。这包括简单地去做一些像http://domain.com/?p=123.

我已经做了以下工作:

刷新永久链接设置(虽然我认为这不是永久链接问题)

  • 已删除。htaccess并通过转到设置->永久链接重新创建它,专门创建了一个-[名称]。任何给定类型的php文件都禁用了所有插件,检查是否存在任何页面/分类名称冲突(即使有随机名称也仍然失败)
  • 检查了服务器日志中是否有错误(自故障排除开始后无错误)
  • 将整个主题上载到不同的WP安装中,但均无效。

    我已将自定义后注册简化为一个尽可能简单的函数:

    add_action(\'init\', \'init_sample\');
    function init_sample() {
        $args = array(
            \'public\' => true,
        );
        register_post_type( \'sample\' , $args );
    }
    
    但无论是这一点,还是任何其他论点的组合,似乎都无济于事。

    即使单击admin中的“查看帖子”链接,也会导致404页面。

    然而,我可以通过查询毫无问题地检索自定义帖子。

    我正在运行WP v3。2.1。

    如果非要我猜的话,我会说主题的其他地方有什么东西把事情弄糟了,但我不知道该去哪里找到答案——有谁能提供一些建议,甚至可以在哪里解决这个问题?

  • 2 个回复
    最合适的回答,由SO网友:Samuel Hulick 整理而成

    我一问完问题,就去关闭函数。php,并碰巧注意到自定义帖子类型正在if (is_admin()) { 评估员。把他们从中解救出来就成功了。

    Reasonably enough, it looks like custom posts MUST be registered in a publicly-accessible manner.

    一定有这样一条定律,即不管在堆栈交换问题之前花费多少时间,解决方案都会在被问及后几分钟内呈现出来。

    SO网友:kaiser

    自定义Post类型是在代码中“注册”的,而不是在数据库中(例如,自定义分类法)。因此,将这样的代码包装在if ( is_admin() ) 语句将其与面向公众的查询混合在一起,因为您的主题或插件不会告诉公众$wp_query 对象表示存在cpt或自定义分类法。这也意味着$wp_template_hierarchy 如果不为每个页面视图“注册”它,则无法正常工作。

    结束

    相关推荐