【1分で解決】WordPressのカスタムHTMLが勝手に消える原因と直し方

先日、過去にホームページ制作のご依頼を受けたお客様からお問い合わせがありました。

その内容が、「WordPressでカスタムHTMLブロックを使って書いた内容がプレビューで表示されない」といったもの。

「またまたぁ~、HTMLが間違ってるんじゃないの?」と思い実際に確認してみると、どうやら入力したHTMLコードがプレビューボタンを押したあとに勝手に書き換わってるではありませんか!

つまり、正しくHTMLを入力してもこの謎の現象のせいで表示崩れを起こしたり、反映されなかったりするわけです。

ちなみに、下書き保存や投稿ボタンを押しても同じように書き換わってしまいます。

色々調べた結果、ものの1分で解決できたのでこの不具合の原因と解決策を記録しておきます。

目次

カスタムHTMLが勝手に変わる原因はユーザー権限にある

結論から言うと、今回このようなエラーが起こる原因は、ユーザー権限にありました。

わたしはホームページを納品する際にブログ編集用のログインIDと、すべてのデータ編集ができる管理者用のログインIDの2種類をお客様に伝えるようにしています。

理由はワードプレスになれていない人が管理者用のIDでログインした場合、誤操作によってサイトにエラーを起こす可能性があるからです。

なので、日常使いはブログ編集用のIDを作成しログインしてもらっています。

ところが、管理者権限がないユーザーがカスタムHTMLを編集すると、セキュリティ上の理由でコードが変わってしまうそうなのです。

試しに管理者用のIDで編集した結果、このエラーは起こりませんでした。

このコードで瞬時に解決

管理者ではないユーザーでもカスタムHTMLを編集できるようにするためには、function.phpに以下のコードを追加します。

function add_theme_caps(){
$role = get_role( ‘★★★’ );
$role->add_cap( ‘unfiltered_html’ );
}
add_action( ‘admin_init’, ‘add_theme_caps’ );

「get_role」という関数で権限グループの指定ができるので、★の部分には権限を付与するユーザーIDを入れます。

デフォルトのユーザーIDはこちらです。

管理者:administrator
編集者:editor
投稿者:author
寄稿者:contributor
購読者:subscriber

新しく権限グループを追加した場合は、作成時に設定したユーザーIDを指定すればOKです。

そもそも管理者としてログインできない人はどうする?

function.phpを編集するためには管理者でログインする必要があります。

ホームページ制作を第3者に依頼した場合など、そもそも管理者用のログイン情報を知らされてないケースもあるかと思います。

その場合は、ホームページ制作を委託した業者さんに代わりに設定してもらうか、管理者用のログイン情報を教えてもらってください。

業者さんと連絡が取れないなどの理由で設定が難しい場合は、サーバーからfunction.phpを編集しましょう。

自力での設定に心配がある方は当店で行えますのでお気軽にご相談ください。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
目次