スプレッドシートを公開(保存)できない場合
Googleスプレットシートのファイルがクラウド上あるので、公開することにしましたが、なぜかプレビューでは表示できるのですが、カスタムHTMLが保存されないことが発覚しました。
※編集中でのプレビューはできます。
結果的には、[ iframe ]ダグが管理者以外で保存できないことが原因だったようです。
[ iframe ] タグを保存できるようにする
[ iframe ]タグを保存できる様にユーザー権限に権限を付与する方法で解決するとこにしました。
最終的に使用した解決方法
【 個々のサイト(サブドメイン)の[ functions.php ]にそれぞれ追記 】
mu-plugins フォルダに追加する(マルチサイト)
自作ファイル名(例):add_cap_to_unfiltered.php
保存先パス(例):/public_html/wp-content/mu-plugins/
※フォルダ名[mu-plugins]は自分で作成
add_cap_to_unfiltered.php のファイル内に下記コードを記載して、ファイルをアップロード
※実際は cpanel から ファイル マネージャー で、直接作成編集保存しました。
<?php
// マルチサイトでunfiltered_htmlを保存できるようにする
// 管理者と編集者
function add_cap_to_unfiltered($caps, $cap, $user_id) {
if ($cap === 'unfiltered_html'
&& (user_can($user_id, 'editor') || user_can($user_id, 'administrator'))
) {
$caps = array('unfiltered_html');
}
return $caps;
}
add_filter('map_meta_cap', 'add_cap_to_unfiltered', 1, 3);
functions.php へ 追記する(マルチサイト型)
それぞれのサイトの[ functions.php ]へ 下記コードを追記
// マルチサイトでunfiltered_htmlを保存できるようにする
// 管理者と編集者
function add_cap_to_unfiltered($caps, $cap, $user_id) {
if ($cap === 'unfiltered_html'
&& (user_can($user_id, 'editor') || user_can($user_id, 'administrator'))
) {
$caps = array('unfiltered_html');
}
return $caps;
}
add_filter('map_meta_cap', 'add_cap_to_unfiltered', 1, 3);
functions.php へ 追記する(シングルサイト)
ユーザー権限毎にカスタマイズする方法で解決します。
管理者&編集&投稿者の3つに権限を付与したいと思います。
〇 特権管理者:マルチサイト管理者
〇 管理者: administrator
〇 編集者: editor
〇 投稿者: author
〇 寄稿者: contributor
〇 購読者: subscriber
場所(例):Public_html\wp-content\themes\テーマ\functions.php
※実際には検証できてません。
//スプレッドシート公開(保存)iframe 保存権限付与
function add_if_caps(){
//管理者
$role = get_role( 'administrator' );
$role->add_cap( 'unfiltered_html' );
//編集者
$role = get_role( 'editor' );
$role->add_cap( 'unfiltered_html' );
//投稿者
$role = get_role( 'author' );
$role->add_cap( 'unfiltered_html' );
}
add_action('admin_init', 'add_if_caps');
下の記事が保存出来るようになった投稿記事になります。

[ WAF ]の設定 一時 オフ
[ ModSecurity ]を一時的にオフにする
※検索で沢山ヒットしますが、シングルサイト&管理者で保存できない場合と思われます。
参考にしたサイト
マルチサイト向け情報


シングルサイト向け情報



コメント