ユーザー別のメモ用カスタム投稿タイプを追加する。
Wordpressを長く使っていると色々とメモをしたくなることもあります。
管理画面でのメモにはWordmemoというプラグインを使ったりしていたのですが、全ての管理画面が見れるユーザーに表示されてしまいますし、一つしか表示されません。
というわけで、カスタム投稿を利用してログインしたユーザーのみが表示されるメモを作成したいと思います。
ユーザー専用カスタム投稿タイプを作るコード
//ユーザー別のメモ用カスタム投稿タイプを作る。 function user_memo_init(){ global $user_identity; if ( current_user_can( 'edit_posts' ) ){ $args = array( 'labels' => array('name'=>$user_identity), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => 2, ); $post_name = "memo_" . $user_identity; register_post_type($post_name,$args); } } add_action('init', 'user_memo_init');
上記のコードをfunctions.phpに追加してみてください。
ログインしたユーザーの名前のカスタム投稿タイプが追加されたはずです。これはそのユーザーがログインされた状態だけ表示されるので他のユーザーには表示されませんし、ログインしていない状態ではBLOGにも表示されません。
(データベースには保存されているのでwpdbで無理矢理読み込むことはできます)
後はこの投稿タイプで自分の好きなようにメモを残して投稿をすればいいです。
*ダッシュボードにメモを表示したい場合
せっかくメモしたのだし、ダッシュボードからメモを見たいときもあると思います。そういうときは以下のコードをfunctions.phpに追加してください。
//メモをダッシュボードに表示 function dashboard_user_memo_function() { global $user_identity; $post_type = $post_name = "memo_" . $user_identity; $args=array('post_type'=>$post_type,'posts_per_page'=>10); $query = new WP_Query($args); if($query->have_posts()){ $title_bar = "<select id='memo_title'>\n"; $memo_content = "<div id='memo_content'>"; while($query->have_posts()){ $query->the_post(); $id = get_the_id(); $title = get_the_title(); $title_bar .= "<option value='memo_{$id}'>{$title}</option>\n"; $memo_content .= memo_html($id,$title,get_the_content()); } }else{ echo "現在メモはありません"; } $memo_content .= "</div></div>"; $title_bar .= "</select>"; echo $title_bar; echo $memo_content; $js = ' <script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#memo_title").change(function(){ jQuery("#memo_content div").hide(); jQuery("#" + jQuery("#memo_title").val()).show(); }); jQuery("#memo_content div:first-child").show(); }); </script> '; echo $js; } //メモHTML出力部分 function memo_html($id,$title,$text=""){ $html = " <div id='memo_{$id}' style='display:none;'> <textarea name='content' rows='6' cols='40' > {$text} </textarea> </div> "; return $html; } //ダッシュボード出力 function add_dashboard_memo_post() { global $user_identity; $menu_title = sprintf(__('%s Memo'),$user_identity); wp_add_dashboard_widget('dashboard_memo_posts', $menu_title, 'dashboard_user_memo_function'); } add_action('wp_dashboard_setup', 'add_dashboard_memo_post' );
先ほどのカスタム投稿で投稿された最新データ10件が表示されるはずです。表示だけで更新はできませんが
コピーはできるので、よく使う情報を登録しておくといいかもしれません。
今思うと add_meta_boxで投稿時に表示することでよく使う使い回しをコピーさせるのも面白そうですね。