2024年8月17日

【カスタムHTML】編集画面ではプレビューできるが、公開画面でうまく表示されない

  

症状

WordPressのカスタムHTMLブロックに挿入した内容がプレビュー画面では表示されるのに、公開画面ではうまく表示できないという状態。

具体的には、もしもアフィリエイトの簡単リンクをカスタムHTMLで挿入した際に、コードがそのまま公開画面に表示されてしまうというもの。

原因

ユーザ権限が問題でした。

管理者権限がないユーザがカスタムHTMLによってHTMLのコードを入力すると、コードが変わってしまうことがあるようです。

セキュリティの観点から、私の場合は記事を編集するときは「投稿者」として記事を書いていましたが、これが問題の原因でした。「管理者」として試すと正常に動作しました。

改善策

2つあります。

1つ目は管理者として該当部分を編集すること。

2つ目はfunction.phpに以下のコードを追加することです。

// 投稿者にunfiltered_html権限を付与する
function allow_unfiltered_html_for_authors() {
    if (current_user_can('許可する権限のタイプ') && !current_user_can('unfiltered_html')) {
        $role = get_role('許可する権限のタイプ');
        $role->add_cap('unfiltered_html');
    }
}
add_action('init', 'allow_unfiltered_html_for_authors');

「許可する権限のタイプ」と書いてあるところに、実際に許可を与えたい権限を英語で追加してください。

権限の種類は、編集者(editor)か投稿者(author)だと思います。