2010-05-28 72 views
3

在那裏我想我很瞭解Wordpress。現在看來,update_option()自動轉義代碼。如果我想在選項中保存一些Javascript或HTML代碼,這種行爲會導致代碼無法使用。如何保存JavaScript和HTML選項,而不被自動轉義?

我拒絕在返回的值上執行str_replace來過濾掉每個反斜槓。一定有更好的方法。

下面是PHP的文本框中輸入一些代碼:

​​

這是提交表單(實質)後會發生什麼:

update_option('option', serialize($_POST)); 

任何想法?

編輯:我現在通過使用PHP的stripslashes()(其中必須呈現腳本)以及文本框中的htmlentities(stripslashes())來顯示存儲的代碼。雖然這樣做的工作,我仍然想知道是否有更好的解決方案。

+0

而不是使用內置的函數爲什麼不使用wpdb類來做所有的數據庫工作? – hsatterwhite 2010-05-28 20:01:50

+0

比使用update_option和get_option更容易/更好?如果你有一個你的意思的例子的鏈接,那將不勝感激!謝謝。 – bobsoap 2010-05-28 20:04:37

+1

這將需要你瞭解一下WordPress數據庫模式,但它很簡單:http://codex.wordpress.org/Function_Reference/wpdb_Class – hsatterwhite 2010-05-28 20:05:54

回答

2

現在看來,update_option()自動轉義代碼。

它只對數據庫條目的值進行清理。你會發現真正的麻煩製造者在wp-settings.php的750行左右,WP功能add_magic_quotes()

是的,你看對了,加魔術引號

由於某些原因,WordPress決定強制使用魔術引號,因此在編寫插件等時,您總是需要在GET和POST上使用反斜槓。

2

這是真的@TheDeadMedic stripslashes必須使用像;

echo stripslashes(get_option('option'));