WordPressサイトのメンテンナンス時などに、管理者や特定のユーザーとしてログインしている時のみに効かせるCSSやJavaScriptを使いたいということがあります。
私の場合、オンライン決済を導入しているショップサイトで、新たな決済方法を追加することになり、テスト環境で購入テストを行う際に必要でした。
テスト環境なので、一般のサイト訪問者に対してはメンテンナス中のアナウンスとともに、オンライン決済の選択肢を与えない(非表示にする)ようにしておく必要がありますが、テスト購入するユーザーには表示されていないと選択できません。
なので、bodyタグにログインユーザー名のクラスを追加し、CSSやJavaScriptで値の出し分けを行いました。
このbodyクラスの追加は、以前、執筆しました WordPress – 超便利!bodyクラスにページスラッグ(最上親も)とカテゴリスラッグを追加 という記事の応用でもあります。
bodyタグにログインユーザーを含むクラスを追加する
WordPressに用意されているbody_classフィルターフックを使用します。以下のコードを子テーマフォルダのfunctions.phpに追記します。
変数名$classは、body_classフィルターのコールバック関数の引数の1つで、body要素のクラス属性に含まれる既存のクラス名を表しています。既存のbodyクラスを維持し、新たなクラスを追加するための変数です。
functions.php
<?php add_filter( 'body_class', function( $classes, $class ) { if ( is_user_logged_in() ) { $user = wp_get_current_user(); $classes[] = 'current-user-' . $user->user_nicename; } return $classes; }, 10, 2 ); ?>
以下の記事を参考にさせていただきました。
ユーザー名をbodyに付与する方法
ユーザー名をbodyに付与する方法 解決済 saisa333 (@saisa333) 3年、 5ヶ月前 仕事で…
以上、ご参考になれば幸いです。ありがとうございます。
コメント