WordPress>通过脚本bug设置永久链接选项?

时间:2009-11-11 22:30:22

标签: wordpress-theming

我的主题的自定义选项面板包含以下代码...

` / *初始化网站选项* /

if(get_option('permalink_structure')==“”){update_option('permalink_structure','/%postname%/');} `

这将检查永久链接选项设置,因为WP默认为“”,它会触发site.com/?p=x处理程序。这样,如果用户尚未设置默认的永久链接,我的脚本会通过将永久链接设置为发布名称来为它们设置永久链接。或者至少是我的想法...

但是,我有一些人让我的模板告诉我,首次安装时,他们在页面上收到404错误

显然,解决方法是物理导航到固定链接页面,然后点击“保存更改”(即使您第一次点击此页面时,固定链接会出现,就好像它已正确输入到“定制”领域。

任何人都知道为什么会这样吗?除了在上面的代码中调用update_options()时会发生什么情况,它们可能是数据库中另一个确定永久链接的设置吗?

2 个答案:

答案 0 :(得分:1)

嗯,这可能是因为你正在更新数据库表(permalink_structure)中的值,而.htaccess保持不变,这就是为什么mod_rewrite没有被加载而用户在页面上得到404错误的原因。

我相信WordPress还会在.htaccess中添加重写规则,以便在您点击管理面板中的“保存更改”时启用永久链接。让我把它挖出来,找出WP正在做什么。


修改

好的,这是代码正在做你想要完成的事情:

<?php

if (get_option('permalink_structure') == "")
{
    // Including files responsible for .htaccess update
    require_once(ABSPATH . 'wp-admin/includes/misc.php');
    require_once(ABSPATH . 'wp-admin/includes/file.php');

    // Prepare WordPress Rewrite object in case it hasn't been initialized yet
    if (empty($wp_rewrite) || !($wp_rewrite instanceof WP_Rewrite))
    {
        $wp_rewrite = new WP_Rewrite();
    }

    // Update permalink structure
    $permalink_structure = '/%postname%/';
    $wp_rewrite->set_permalink_structure($permalink_structure);

    // Recreate rewrite rules
    $wp_rewrite->flush_rules();
}

答案 1 :(得分:0)

wp_rewrite似乎没有任何效果。用户仍然必须手动点击永久链接屏幕上的“保存选项”。

我想我会在更新期间在该页面上运行firebug,以查看update_options显然缺少的设置。

当更新的选项是permalink_structure时,这似乎是update_options中的错误。

有人不同意吗?