程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> wordpress作者角色添加不了視頻代碼

wordpress作者角色添加不了視頻代碼

編輯:關於PHP編程

一直有一個很詭異的情況,就是在wordpress裡不能加入視頻代碼,具體是在後台編輯器文本模式下添加視頻代碼後,切換到可視化能正常看到視頻框,但保存後視頻代碼消息。

仔細觀察後發現作者不能添加,而編輯和管理員能添加。

不吊胃口,先說解決方案:說穿了很簡單,安裝一個插件“用戶角色編輯器“,將作者角色下的”不過濾html標簽“勾上即可。

下面是折騰過程:

1. debug,發現如下代碼調用順序:

wp_update_post->

wp_insert_post->

sanitize_post->

sanitize_post_field->

 

2. 

content_save_pre.

 

wp_filter_post_kses');。

function kses_init() {
kses_remove_filters();

if (current_user_can('unfiltered_html') == false)
kses_init_filters();
}

add_action('init', 'kses_init');
add_action('set_current_user', 'kses_init');

 

這時發現就是屬於當前用戶沒有unfilter_html的這個權限了。

 

解決方案

1. 嘗試將這個wp_filter_post_kses 利用函數remove_filter去掉,但這就出現一個add_filter與remove_filter的先後關系問題,但我加的地方remove_filter竟然在add_filter之前。

  這樣子即使找到一個巧妙的地方將remove加進去,也太依賴這個先後關系,保不誰出大亂子。

2. 直接給用戶賦預unfilter_html權限,這樣子一個缺點是將kses_init_filters裡的一系列函數都給刪掉了。考慮到這個是自己的博客,作者都是是指定的幾個人,而且此解決方法易於理解,沒有那麼多繞繞,就決定用這種方法了。

 

wordpress真強大,也真夠折騰人的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved