WordPress 更新至 4.2 版本後調整了某些函式,聽到最多的疑問便是評論表情都失效了。其實也不是啥太大的問題,只不過 Wordpress 更新至 4.2 以後評論表情函式名進行了變更而已,才導致了很多部落格的表情全部都是叉叉。其實解決方法有很多種,今天,珞凡在這裡介紹一種簡單的方法幫助大家解決評論表情失效的問題。
將以下程式碼直接丟進主題 functions.php 即可:
/**
* Disable the emoji’s
*/
function disable_emojis() {
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );
remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’ );
remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’ );
remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );
add_filter( ‘tiny_mce_plugins’, ‘disable_emojis_tinymce’ );
}
add_action( ‘init’, ‘disable_emojis’ );
/**
* Filter function used to remove the tinymce emoji plugin.
*
* @param array $plugins
* @return array Difference betwen the two arrays
*/
function disable_emojis_tinymce( $plugins ) {
return array_diff( $plugins, array( ‘wpemoji’ ) );
}
function smilies_reset() {
global $wpsmiliestrans;// don’t bother setting up smilies if they are disabled
if ( !get_option( ‘use_smilies’ ) )
return;$wpsmiliestrans = array(
‘:mrgreen:’ => ‘icon_mrgreen.gif’,
‘:neutral:’ => ‘icon_neutral.gif’,
‘:twisted:’ => ‘icon_twisted.gif’,
‘:arrow:’ => ‘icon_arrow.gif’,
‘:shock:’ => ‘icon_eek.gif’,
‘:smile:’ => ‘icon_smile.gif’,
‘:???:’ => ‘icon_confused.gif’,
‘:cool:’ => ‘icon_cool.gif’,
‘:evil:’ => ‘icon_evil.gif’,
‘:grin:’ => ‘icon_biggrin.gif’,
‘:idea:’ => ‘icon_idea.gif’,
‘:oops:’ => ‘icon_redface.gif’,
‘:razz:’ => ‘icon_razz.gif’,
‘:roll:’ => ‘icon_rolleyes.gif’,
‘:wink:’ => ‘icon_wink.gif’,
‘:cry:’ => ‘icon_cry.gif’,
‘:eek:’ => ‘icon_surprised.gif’,
‘:lol:’ => ‘icon_lol.gif’,
‘:mad:’ => ‘icon_mad.gif’,
‘:sad:’ => ‘icon_sad.gif’,
‘8-)’ => ‘icon_cool.gif’,
‘8-O’ => ‘icon_eek.gif’,
‘:-(‘ => ‘icon_sad.gif’,
‘:-)’ => ‘icon_smile.gif’,
‘:-?’ => ‘icon_confused.gif’,
‘:-D’ => ‘icon_biggrin.gif’,
‘:-P’ => ‘icon_razz.gif’,
‘:-o’ => ‘icon_surprised.gif’,
‘:-x’ => ‘icon_mad.gif’,
‘:-|’ => ‘icon_neutral.gif’,
‘;-)’ => ‘icon_wink.gif’,
// This one transformation breaks regular text with frequency.
// ‘8)’ => ‘icon_cool.gif’,
‘8O’ => ‘icon_eek.gif’,
‘:(‘ => ‘icon_sad.gif’,
‘:)’ => ‘icon_smile.gif’,
‘:?’ => ‘icon_confused.gif’,
‘:D’ => ‘icon_biggrin.gif’,
‘:P’ => ‘icon_razz.gif’,
‘:o’ => ‘icon_surprised.gif’,
‘:x’ => ‘icon_mad.gif’,
‘:|’ => ‘icon_neutral.gif’,
‘;)’ => ‘icon_wink.gif’,
‘:!:’ => ‘icon_exclaim.gif’,
‘:?:’ => ‘icon_question.gif’,
);
}
smilies_reset();
最後,想補充的是,Wordpress 4.2 修改了 translate_smiley 函式。使得輸出的表情帶樣式 (style),具體為 style=”height: 1em; max-height: 1em;” 。這可能會對我們的表情產生影響 (我的是被壓扁了),因為這個函式本身沒有過濾器,所以無法新增過濾,對輸出再解碼也影響效能,只能修改原始檔,來達到目的。具體位置在/wp-includes/formatting.php 的第 2114 行。如下:
return sprintf( ‘<img src=”%s” alt=”%s” class=”wp-smiley” style=”height: 1em; max-height: 1em;” />’, esc_url( $src_url ), esc_attr( $smiley ) );
修改為:
return sprintf( ‘<img src=”%s” alt=”%s” class=”wp-smiley” />’, esc_url( $src_url ), esc_attr( $smiley ) );
其實就是刪除這個樣式。這樣就不會對我們現有的表情產生任何影響了。
以上。