WordPress 投稿一覧でユーザー毎に背景色を変更する方法
該当部分のソースを確認しました
手元のWPでテストユーザーを作って各ユーザーが投稿した際に投稿一覧テーブルのtr要素にどんなclassが付与されるのか確認してみました。
私の予想では各tr要素にclass="author-1"とか付くと思っていたのですが、残念ながらデフォルトの状態では「author-self」か「author-other」の2通りにしか分類されない事が判明しました(;・∀・)
現在ログインしている「自分」か「他の人か」の区別ですね。「ユーザー毎」ではないけれども、とりあえずこれでやってみます。
現在ログインしているユーザーか他の人かで色分けする
とりあえずデフォルトで付与される現在ログインしている「自分」か「他の人か」を判別して付与される「author-self」と「author-other」を利用して色分けします。
上記の「WordPress:投稿一覧で記事ステータス毎に背景色を変更する方法 | NxWorld」で紹介されていたソースをほんの少し変えただけですが、こんな感じでいけました。
//functions.php //投稿一覧で現在ログインしているユーザーとそれ以外のユーザーで色分けする function change_post_users_background_color() { ?> <style type="text/css"> /* 現在ログインしているユーザーの背景色 水色 */ .author-self { background-color: #75c4d1;} /* その他のユーザーの背景色 灰色 */ .author-other { background-color: #eeeeee;} </style> <?php } add_action( 'admin_head', 'change_post_users_background_color' );
ログインしてる自分の投稿の背景色は水色、それ以外のユーザーは灰色を指定しています。
やっぱり各ユーザー毎に色分けがしたい!自己責任で(*´Д`)
各ユーザーIDごとにtr要素に背景色を指定したい場合、上記の理由でfunctions.phpだけでは無理でした。なので、/wp-admin/includes/内のファイルをいじらないと無理、なのかな?
ということで、そこのソースを吐いてる箇所を探し出して、「author-self」か「author-other」を割り振っている箇所を変更して「author-(ユーザーID)」にしたい。
その部分に該当するソースを出力しているファイルは以下のファイルでした。
wp-admin/includes/class-wp-posts-list-table.php
そして問題の「author-self」か「author-other」を振り分けしている箇所はここ。
// wp-admin/includes/class-wp-posts-list-table.php // 538行目付近(バージョン等によって違うと思います) $classes = $alternate . ' iedit author-' . ( get_current_user_id() == $post->post_author ? 'self' : 'other' );
現在ログインしているユーザーIDと記事の投稿者のIDが一致しているかどうかを判別しているので、そこを投稿者のIDの値が入るようにしたい。
//$classes = $alternate . ' iedit author-' . ( get_current_user_id() == $post->post_author ? 'self' : 'other' ); ↓変更 $classes = $alternate . ' iedit author-' . ( $post->post_author );
これでデフォルトで「author-self」か「author-other」が割り振られていた箇所が「author-(ID)」になります。で、先ほどと同じくfunctions.phpに下記を追記。今回ユーザーは全部で3ユーザー用意してあるので3件分指定しています。
//functions.php //投稿一覧で各ユーザーID毎に色分けする function change_post_users_background_color() { ?> <style type="text/css"> /* author-1 の投稿記事 水色 */ .author-1 { background-color: #75c4d1;} /* author-2 の投稿記事 オレンジ */ .author-2 { background-color: #FCDCA0;} /* author-3 の投稿記事 黄緑 */ .author-3 { background-color: #8AB846;} </style> <?php } add_action( 'admin_head', 'change_post_users_background_color' );
こんな感じで各ユーザー毎に色分けが出来ました。1人目のユーザー(author-1)の背景色は水色、2人目のユーザー(author-2)がオレンジ、3人目のユーザー(author-3)が黄緑です。
が、本来勝手にいじるべきファイルではないので、本体のアップデートがあったらまたソースの書き換えが必要になるかも。また、ここを変更することによって他に支障がでるのかどうかとかは確認してないですのでその辺りは自己責任でひとつよろしくです…。
メディアライブラリもユーザー毎に色分けされた状態になります
メディアライブラリの一覧テーブルのtr要素にも「author-self」か「author-other」のどちらかがデフォルトで入っていました。
ということで、上記2種類の背景色の色分けのうち、上の方の「現在ログインしているユーザーか他の人かで色分けする」方法を実施すると、メディアライブラリの一覧も色分け状態になります。
メディアライブラリの一覧も「ログインしている自分」か「他の人か」ではなく、各ユーザー毎に個別の色わけをしたい場合は下記のファイルを編集します。
wp-admin/includes/class-wp-media-list-table.php
先ほどの投稿一覧の時と同様に現在ログインしているユーザーかどうかを判別している箇所があるので、そこを変更します。
// wp-admin/includes/class-wp-media-list-table.php // 210行目付近(バージョン等によって違うと思います) $post_owner = ( get_current_user_id() == $post->post_author ) ? 'self' : 'other'; ↓変更 $post_owner = $post->post_author;
これもまた本来いじるべきファイルではないので、編集は自己責任でお願いします。