とある案件でサーバー移管が行われた際、クライアントから「管理画面でビジュアルエディタが表示されず選択できません。」と言われてしまいゴニョゴニョしたので以下備忘録。
このタイミングで発生した問題ならサーバー移管が原因かと思い、サーバー周りに原因が無いか調べてみるとあっさり解決しました。
結論から言うと、原因はCloudFrontにあります。
どうやらビジュアルエディタの表示・非表示はUserAgentを元に振り分けられ、PCからのアクセスでない場合は非表示になるそう。
CloudFrontを導入する場合、特に設定を行わなければUserAgent文字列が Amazon CloudFront となり、PCからのアクセスだと認識してくれません。
下記参照。
wordpress.org
ということで、 UAが Amazon CloudFront でも true を返すよう functions.php に以下を追記し解決!
add_filter( 'user_can_richedit', function( $wp_rich_edit ) {
if ( !$wp_rich_edit
&& ( get_user_option( 'rich_editing' ) == 'true' || !is_user_logged_in() )
&& isset( $_SERVER[ 'HTTP_USER_AGENT' ] )
&& stripos( $_SERVER[ 'HTTP_USER_AGENT' ], 'amazon cloudfront' ) !== false
) {
return true;
}
return $wp_rich_edit;
} );