プラグインをカスタマイズしたくないお話
カスタムフィールドで有名なプラグインに「Advanced Custom Fields」があります。

Advanced Custom Fields
Customize WordPress with powerful, professional and intuitive fields. Proudly powering over 2 million websites, Advanced Custom Fields is the plugin W …
便利な機能がたくさんあるし使い方も直感的だし人気があると思います。
そんなACFをお使いの環境で出た要件。
Wysiwyg エディタのとある項目で下記のようにしたい。
・管理者は「タブ」ビジュアル&テキスト
・投稿者は「タブ」ビジュアルのみ
まぁ普通にできそうな気はしたのですが、繰り返しフィールド内なので少し面倒になりました。
function.phpで対応
プラグインをカスタマイズするのは勘弁だったのでfunction.phpでどうにかしました。
まずはラッパーの属性にてclass名をつけてあげます。
例としてtarget_tab1にします。
んでjQueryで管理者以外は非表示にするコードを作成する。
キャッシュのせいでテキスト選択になってる場合があるのでクリックしてビジュアルにしておきます。
<script> jQuery(function($){ $(document).ready(function(){ $(".target_tab1 .wp-editor-tabs .switch-tmce").click(); $(".target_tab1 .wp-editor-tabs").hide(); }); }); </script>
このコードを投稿画面に適用させるのだけど少し悩む。。。
admin_print_scriptsとかadmin_print_footer_scriptsとか試してもうまくいかない。。。
試行錯誤した結果、admin_noticesで成功しました。
不細工だけど下記で完成。
function admin_notices_tabs(){ global $post; if (isset($post)){ if ('hoge' === $post->post_type){ if(!current_user_can('administrator')){ echo '<div class="error">'; echo '<script>'; echo 'jQuery(function($){'; echo '$(document).ready(function(){'; echo '$(".target_tab1 .wp-editor-tabs .switch-tmce").click();'; echo '$(".target_tab1 .wp-editor-tabs").hide();'; echo '});'; echo '});'; echo '</script>'; echo '</div>'; } } } } add_action( 'admin_notices', 'admin_notices_tabs' );
動けばいいんだよ動けば!
コメント