すっかり春めいてきまして。みなさんの花粉症の具合はいかがですか?
私自身は平気なのですが、まわりの花粉症の人たちをみると辛そうで・・・
それよりも私は春先特有の猛烈な眠気に困っています。間断なく春の眠気が襲ってくるのです。強敵です。手強いです。眠いです。
いつものことじゃないのかって?いやー、まぁ。。。

さて、今日はWordpressのお話で。
現在投稿するユーザーが複数入るポータルサイトみたいのを作ってまして。
記事書く時にカテゴリーのつけ忘れって、結構あると思うのですよね。それで、特定のユーザーの場合は、必ずあるカテゴリに初めからチェックが入った状態にしたいな、と。
ユーザー権限で分岐できればもっとカンタンだったかもなのですが、今回はjQueryで処理しました。
条件
- ユーザーのプロフィール項目にカスタムフィールド(ACF使用)でタイプ別のチェック項目を作っている。
- 前記チェック項目とslugが対応したカテゴリを作ってある。
処理
- ユーザーのプロフィール情報から該当するチェックボックを配列に入れる。
- slugのカテゴリIDを取得する。
- ダッシュボードのカテゴリのチェックボックスには「in-category-カテゴリID」のIDが付与されるのを利用し、対応する「in-category-カテゴリID」のチェックボックスの’checked’を’checked’にする。
- 2、3の処理をforeachでプロフィール情報のチェックボックス分行う。
コード
※function.phpに記述
function check_cat_type() {
//ユーザーID取得
$user = wp_get_current_user();
$userID = $user->ID;
//type
/* プロフィール情報とカテゴリの共通するスラッグ */
$type01 = 'type01';
$type02 = 'type02';
$type03 = 'type03';
$type = 'profile_type';
/* 'profile_type'はプロフィール情報のカスタムフィールドのslug */
//ユーザーのタイプ取得
$profile_type = get_the_author_meta( $type, $userID);
if($profile_type != ''){
foreach ($profile_type as $thistype){
//カテゴリーIDの取得
if($thistype == $type01){
$idObj = get_category_by_slug( $type01 );
}elseif($thistype == $type02){
$idObj = get_category_by_slug( $type02 );
}elseif($thistype == $type03){
$idObj = get_category_by_slug( $type03 );
}
$cat_id = $idObj->term_id;
//jQueryでチェックボックスに該当するチェックボックスにチェックを入れる
$script_type = '<script type="text/javascript">';
$script_type .= 'jQuery(document).ready(function($){';
$script_type .= 'jQuery("input#in-category-' .$cat_id .'").attr("checked", "checked");';
$script_type .= '});';
$script_type .= '</script>';
echo $script_type;
}
}
}
add_action('admin_head', 'check_cat_type');
今回はコチラを参考にさせていただきました。ありがとうございます!
記事投稿時に指定したカテゴリーのチェックボックスを選択済みにする
今の所これだと、編集時にも必ずチェックが入るんですよね。
あえてチェック外したいなっていうときは忘れないようにですねー