どうもどうもこんにちは。
WordPressに関しては冒険者レベル2くらいでヨワヨワなマークアッパーです。
暑いですね。夏ですね。夏といえば、怖い話ですよね?
今回は、WordPress初心者の私が体験した怪奇現象(違)について書いてみます。玄人な皆様方におかれましては、そんなん常識...と思われるかもしれませんが、ご容赦いただきたく。
WordPressの投稿画面にある、あのテキストエディタ。
開発担当者のユーザーアカウントにてベースとなるコードを入力・保存して運用担当者に引き継ぎ、以降は運用担当者のユーザーアカウントにて編集・更新をしていくという流れ。
すると...
更新のテストをした運用担当者から「なんだか表示が崩れてるんです」との報告が。
投稿画面を見てみると、こちらで入力したコードから、一部の必要なタグや属性が消えています。そりゃ崩れます。もちろん、意図的に消したわけではないもよう。
現象について調べてみると、テキストエディタからビジュアルエディタに切り替えるタイミングで、イロイロ消えてしまうらしいということが判明。だからビジュアルエディタは好きじゃないのだ... おっと、なんでもないです。
工程上、切り替える必要はないのですが、まぁ切り替えちゃったんでしょう。
誤操作ということも考えられますし、なんとか切り替えさせずに済む方法、もしくはビジュアルエディタを使用させない方法はないものかと先輩に聞いてみると、「管理画面で簡単に設定できるよ」とのこと。
なんと。『ユーザーの編集』画面の一番上(2017年7月時点)に「ビジュアルリッチエディターを使用しない」というチェックボックスがあるではないですか。超・簡・単♪
ビジュアルエディタに切り替えることができなくなったことを確認し、必要なタグや属性を再入力して、改めて運用担当者に編集を引き継ぎます。
すると...
更新された投稿画面を見てみると、以前ほどではないまでも、やはり一部の属性が消えてしまっているではありませんか。
ビジュアルエディタは使えなくなっているままなのに、どうして!?
調査の結果、開発担当者のユーザーアカウントでは問題ないのに、運用担当者のユーザーアカウントだと問題の現象が起こることが判明。
調べてみると、ユーザーアカウントの権限グループによって、使えない(入力はできるけど、保存するタイミングで消されてしまう)タグや属性があるようです。iframeタグとか、scriptタグとか、data-*属性とか...。
あれ、でもおかしいな。いずれのユーザーアカウントも管理者権限。問題ないはず...。
この案件、マルチサイトなんですよ。
シングルサイトだと、管理者もしくは編集者権限であれば問題なく使用できるのですが、マルチサイトだと、ネットワークの特権管理者権限でないとダメらしいのです。なにゆえ!!?
運用担当者のユーザーアカウントを特権管理者権限に変更する。
一番簡単な方法ですが、状況によって(例えば運用担当者があまりシステムに詳しくない人である場合など)は、マルチサイトなWordPress全体の特権管理者権限を付与してしまうのは...ちょっと心配...だったりしますよね。
functions.phpで、使用したいタグや属性を許可する設定を書く。
今回は div要素でdata-*属性を使いたかったので、↓こんな感じに書きました。
function my_wp_kses_allowed_html( $tags, $context ) { if ( $context === 'post' ) { $tags['div']['data-abc'] = true; $tags['div']['data-xyz'] = true; } return $tags; } add_filter( 'wp_kses_allowed_html', 'my_wp_kses_allowed_html', 10, 2 );
これで、特権管理者権限でなくても、data-*属性を使うことができるようになりました。やったね!
テキストエディタって、ビジュアルエディタと違って、好きなようにタグや属性を書くことができるものだと思ってましたが、こんな制限がかけられていたとは。私が無知だっただけとはいえ、けっこう驚きました。
そして、マルチサイトって、けっこう落とし穴が多かったりするので、嫌ですね〜怖いですね〜。通常のシングルサイトでは起こらない怪現象(違)が起きたりするので、要注意です。出回っている情報も(シングルサイトに比べると)少なかったりしますし、謎現象に出会ったら、マルチサイトを疑ってみることも必要かも...。
とはいえ、解決方法がちゃんと存在してくれていたので助かりました。
この問題を乗り越えるのにけっこう時間かかっちゃいましたが...これでWordPress冒険者レベル3くらいにはなれたでしょうかねー?