2009-11-11 15 views
2

我的主题的自定义选项面板具有下面的代码...WordPress>通过脚本越野车设置永久链接选项?

` /*初始化现场选项*/

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

这将检查永久链接选项设置,并且由于WP默认值是“”触发site.com/?p=x处理程序。这样,如果用户还没有设置默认的永久链接,我的脚本通过将永久链接设置为发布名称来为他们完成。或者至少我以为......

不过,我有谁拥有我的模板,告诉我说,在第一次安装,他们在网页出现404错误的几个人。

显然,解决方法是物理导航到永久链接页面,只需单击“保存更改”(即使当你第一次打这个页面中,永久链接出现,如果是正确输入到“定制”领域。

任何人都知道为什么会这样?难道自己也许在决定除时会发生什么update_options()被调用,如上面的代码永久分贝另一个设置?

回答

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(); 
} 
+0

+1适用于我。谢谢。 – tucson 2013-08-02 10:55:05

0

wp_rewrite做似乎没有任何效果ers仍然需要手动点击永久链接屏幕上的“保存选项”。

我想我会在更新过程中在该页面上运行firebug,看看update_options显然缺少了什么。

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

有人不同意?

+0

我在这里看到你的最后答复是,早在2009年,但目前我有类似的问题,我很难找到任何(完整)答案。你有没有解决这个问题? – gtr1971 2013-01-07 20:46:21