【问题标题】:Custom Permalink of Custom Post Type自定义帖子类型的自定义永久链接
【发布时间】:2013-09-11 03:23:38
【问题描述】:

我注册了一个新的自定义帖子类型:

register_post_type('abcd_film',
    array(
        'labels' => array(
            'name' => __( 'Films' ),
            'singular_name' => __( 'Film' )
        ),
        'description'   => 'Manage the Films',
        'supports'      => array( 'title', 'editor', 'custom-fields', ),
        'public'        => true,
        'has_archive'   => true,
        'rewrite'       => array('slug' => 'films'),
    )
);

我的 WordPress 位于(虚拟链接):

www.example.com/folder/wordpress/

我的永久链接设置是(“帖子名称”选项):

www.example.com/folder/wordpress/%postname%/

但是,我在自定义帖子类型“电影”下创建了一个新的自定义帖子,帖子名称为“Apple”,链接显示 404 File Not Found.htaccess 文件可由 WordPress 写入,而 WordPress 写入的当前内容为:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /folder/wordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/wordpress/index.php [L]
</IfModule>

# END WordPress

我仔细检查了phpinfo()mod_rewrite() 模块位于“已加载模块”部分。另外,我尝试刷新 WordPress Admin &gt; General &gt; Permalink &gt; Save Changes 中的永久链接设置。

404 Not Found 仍然存在。我还能做什么?

尝试了以下方法:

  1. 将带有值truepublicly_queryable 添加到选项数组(这不是必需的,因为public 已经设置为true,默认值publicly_queryable 等于public)

  2. 将带有值truewith_front添加到rewrite子数组(*也不是必须的,with_front的默认值是true

  3. register_post_type()之后添加flush_rewrite_rules(false);

以上所有尝试均无效。缓存已被禁用和刷新。

参考问题:

【问题讨论】:

  • 您是否尝试将flush_rewrite_rules( false ); 放在后面??另外,如果您更改永久链接结构会发生什么?你有'publicly_queryable' =&gt; true,
  • 添加'publicly_queryable' =&gt; true & flush_rewrite_rules( false ); & 清除缓存后,还是404 Not Found...
  • 好的.. 我现在能想到的最后一件事是尝试将'rewrite' =&gt; array("slug" =&gt; "films","with_front" =&gt; true), 与其他人结合起来。大约两周前我遇到了同样的问题,但我不记得罪魁祸首在哪里。并将永久链接结构更改为默认结果..
  • 另外 - 你如何访问该页面?通过菜单项?
  • 通过 WordPress 菜单在自定义帖子中添加新帖子。然后点击“查看帖子”

标签: wordpress .htaccess mod-rewrite


【解决方案1】:

如果您使用 Chrome 进行测试,您需要确保您的浏览器缓存已清空。使用 Chrome 菜单清空缓存。这不止一次地咬了我。我清除缓存,退出 Chrome,重新访问网站。

我也遇到了保存永久链接上的更改不刷新永久链接表的问题。更改为默认的帖子 ID 帖子类型,而不是恢复正常的帖子类型。

我的客户群遇到的另一个问题是 WordPress 主题,它增加了永久链接规则。如果没有正确完成,可能会导致自定义帖子类型出现故障。尝试使用默认的 WordPress 主题,例如二十三。

如果所有其他方法都失败,请从安装干净的 WordPress 3.6 的测试站点开始,添加您的自定义帖子类型和其他任何内容(没有主题更改或额外插件)。这将消除所有其他变量,让您专注于服务器和系统规则。不过,您似乎已经排除了这种可能性。

祝你好运,如果您自己找到答案,请记得分享您的答案。

【讨论】:

    【解决方案2】:

    问题不是由 WordPress 配置或 PHP 配置引起的。 .htaccess 不起作用的原因是:在我的 Apache 虚拟主机设置中,它被配置为忽略 .htaccess by:

    AllowOverride None
    

    要禁用此锁定,请将虚拟主机文件(sites-enabled 文件夹中)中的值更改为:

    AllowOverride All
    

    然后重新启动 Apache。

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多