2009-11-11 14 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