
WordPress が出力する CSS クラス名からログイン ID を削除する
ここ最近、いきなり寒くなって凄く辛いです。季節って、もう少し段階的に変わらないものですかね?
今回は、”WordPress が吐き出す CSS クラス名からログイン ID を削除する方法” です。個人的には、ログイン ID を隠すことにあまり意味はないんじゃないのかな?と思うのですが、大人の事情で隠さなくてはいけないことも、往々にしてあると思います。そんな時のスニペットです。
HTML タグにクラス属性を付与する WordPress の関数
WordPress のテーマを 1 度でも作成したことがある方は、body_class() 関数と post_class() 関数を使用したことがあると思います。body_class() 関数は body タグに、post_class() 関数は投稿を表示するループ内の HTML タグに使用します。WordPress でテーマを作成する際に使用する、HTML に付与するクラス属性を出力する関数は主に 3 つあります。2 つは先程できてた body_class() 関数と post_class() 関数です。そして、もう 1 つが comment_class() 関数です。この記事で扱うのは、body_class() 関数と comment_class() 関数です。
body タグのクラス属性を出力する body_class() 関数
body_class() 関数は、body タグ内に記述すると、body タグに付与するクラス属性を出力します。
<body <?php body_class(); ?>>
このように body タグを記述すると、WordPress は以下のような HTML タグを出力します。
<body class="home page page-id-1234 page-template-default">
出力されるクラス属性はページ毎にことなりますが、body_class() 関数の場合、著者別アーカイブページ(author.php が呼び出されるページ)では、author-visualive のように、author- に続けてログイン ID が付いてクラスが付与されます。プラスして、author-1 のように、ユーザー ID が付いたクラスも付与されます。
コメントを表示する HTML タグのクラス属性を出力する comment_class() 関数
comment_class() 関数は、body_class() 関数と使い方は同じです。body_class() 関数は基本的に body タグに使用しますが、comment_class() 関数は、1 つのコメントを囲う HTML に使用します。多くの場合は li タグに使用することが多いです。
<li id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
ログイン ID を削除するソースコード
以下に、body_class() 関数からログイン ID を削除するソースコード、 comment_class() 関数からログイン ID を削除するソースコードを示します。あくまでも一例なので、もっと簡単且つ効率的があるでしょ ! という場合は、コメントでアドバイスいただけたら嬉しいです。
body_class() 関数からログイン ID を削除する
<?php /** * Adds custom classes to the array of body classes. * * @param array $classes Classes for the body element. * * @return array * @copyright KUCKLU & VisuAlive */ function themeslug_body_class( $classes ) { return preg_grep( '/\Aauthor\-.+\z/i', $classes, PREG_GREP_INVERT ); } add_action( 'body_class', 'themeslug_body_class' );
comment_class() 関数からログイン ID を削除する
/** * Adds custom classes to the array of comment classes. * * @param array $classes Classes for the comment element. * * @return array * @copyright KUCKLU & VisuAlive */ function themeslug_comment_class( $classes ) { return preg_grep( '/\Acomment\-author\-.+\z/i', $classes, PREG_GREP_INVERT ); } add_action( 'comment_class', 'themeslug_comment_class' );
使用上の注意点とアドバイス
使用する上でいくつか注意点とアドバイスがあります。
- 著者別ページのデザインを著者別に変えている場合は注意が必要
- コメント投稿者別にコメント表示のデザインを変えている場合は注意が必要
- テーマに依存する機能ではないので、テーマの functions.php に追記せず、プラグインを作成した方がよい
- body_class() 関数と comment_class() 関数を処理しただけでは、ログイン ID は隠せない。著者別アーカイブページの URL の変更もお忘れなく。
あとがき…
冒頭でも書きましたが、ログイン ID を隠すのは、そんなに意味はないのかな?と個人的に感じています。ログイン ID を隠したいという要望の意図は、不正ログインの防止だと思います。ログイン ID を隠すという面倒を行うなら、ログインパスワードを強固なものにする、パスワードを使いまわさない、ベーシック認証を設置する、二重認証を導入するなどの方がいいのではないかと感じます。パスワードは、1Password などのアプリを使えば管理は簡単ですし、パスワードのジェネレート機能もあるので便利です。
それでは本日はここまで。
- WordPressの侵入対策は脆弱性管理とパスワード管理を中心に考えよう – 徳丸浩の日記
- 1Password – パスワード管理アプリケーション(スマホアプリ有・日本語対応)
- VA Simple Basic Auth
- SiteGuard WP Plugin
- Edit Author Slug
※ VA Simple Basic Auth と SiteGuard WP Plugin は一緒に使用しない方が身のためです。
[amazonjs asin=”4797361190″ locale=”JP” title=”体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践”]
[amazonjs asin=”4822279987″ locale=”JP” title=”徳丸浩のWebセキュリティ教室”]
[amazonjs asin=”4774187062″ locale=”JP” title=”エンジニアのためのWordPress開発入門 (Engineer’s Library)”]