WordPressでビジュアルエディタが表示されない問題

とある案件でサーバー移管が行われた際、クライアントから「管理画面でビジュアルエディタが表示されず選択できません。」と言われてしまいゴニョゴニョしたので以下備忘録。

このタイミングで発生した問題ならサーバー移管が原因かと思い、サーバー周りに原因が無いか調べてみるとあっさり解決しました。

結論から言うと、原因は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;
} );