WordPress增加magnet、ed2k等新協議超鏈接支持;WordPress增加magnet、ed2k等新協議超鏈接自動刪除掉的解決辦法;
[重要通告]如您遇疑難雜癥,本站支持知識付費業務,掃右邊二維碼加博主微信,可節省您寶貴時間哦!
今天在發布一個電驢ed2k鏈接的時候,發布完成了,發現鏈接被吞噬了,感覺很詭異,這是啥問題?一時間沒整明白,難道是因為安全還是?摸索了一下,果然是因為安全的原因;
那我們需要在Wordpress的超鏈接中增加對magnet、ed2k等新協議的時候如何處理呢?下面我們就來說說;
為防范SQL注入、XSS等攻擊,Wordpress會在保存博客內容時候,對內容自動過濾,導致會對超鏈接中不支持的協議protocol頭(例如:magnet:?xt=urn:btih: ),自動刪除掉。
各種搜素結果顯示,大部分都是簡單粗暴的方案:
修改 wp-includes/post.php,將相關內容注釋掉。
//$postarr = sanitize_post($postarr, 'db');
但這樣放棄了Wordpress原本的防范措施,不建議采用哦。
推薦有效的解決辦法:
方案1:修改 wp-includes/functions.php,增加新協議支持
修改 wp-includes/functions.php 的function wp_allowed_protocols()
if ( empty( $protocols ) ) { $protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'sms', 'svn', 'tel', 'fax', 'xmpp', 'webcal', 'urn' ); }
直接增加需要添加的新協議,例如:
if ( empty( $protocols ) ) { $protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'sms', 'svn', 'tel', 'fax', 'xmpp', 'webcal', 'urn' ,'magnet','ed2k'); }
此種方案存在一個問題:由于是全局性修改,Wordpress每一次版本升級,都會覆蓋修改functions.php 文件,必須手工再次修改此文件。
方案2:在現有主題theme,增加新協議支持
修改 wp-content/themes/對應的theme名稱/functions.php ,增加如下內容:
<?php function ss_allow_magnet_protocol( $protocols ){ $protocols[] = 'magnet'; return $protocols; } function ss_allow_ed2k_protocol( $protocols ){ $protocols[] = 'ed2k'; return $protocols; } add_filter( 'kses_allowed_protocols' , 'ss_allow_magnet_protocol' ); add_filter( 'kses_allowed_protocols' , 'ss_allow_ed2k_protocol' );
推薦使用第二種方式,簡便快捷,尤其可以放在插件中使用,至于插件,請配合站內的文章使用;
如何給WordPress的functions制作模版函數擴展插件? ?按照這個函數插件,就可以每次升級模板或者升級wordpress的時候被覆蓋了~~
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!