投稿一覧で、各ユーザーが投稿した記事のみを表示するには?
-
初めて投稿します。
すでに同じような質問がありましたら、すいません。(見つけられませんでした。)今、Wordpress3.0.1を使っています。
ユーザーを「suzuki」と「yamada」と設定しています。そこで質問なのですが、
suzukiがログインして、投稿一覧画面を見たとき、suzukiとyamadaが投稿した記事が表示されますが、suzukiだけの記事を表示することは可能でしょうか?
もちろん、yamadaがログインした場合は、yamadaが投稿した記事のみ表示させたいのです。プラグインも探してみましたが、ありませんでした。
結構難しいでしょうか?マルチサイト化や、カスタム投稿タイプも考えてみましたが、できれば使いたくありません。
分かりにくい文章で申し訳ありませんが、よろしくお願いします。
-
/* -------------------------------------------- * ページの編集一覧表示を制御 * -------------------------------------------- */ function redirect_dashiboard() { global $current_user; get_currentuserinfo(); if ( !current_user_can('manage_options') ) { switch( true ) { case preg_match('/^\/wordpress(\/wp-admin\/edit-pages\.php)(\?[^author][^=]+=[^&]+)?$/', $_SERVER['REQUEST_URI'], $author_url): case preg_match('/^\/wordpress(\/wp-admin\/edit-pages\.php)(\?trashed=[\d]&ids=[\d][^&]+)?$/', $_SERVER['REQUEST_URI'], $author_url): $redirect_url = get_option('siteurl') . $author_url[1]; if( $author_url[2] ) { $redirect_url .= $author_url[2] . "&author=" . $current_user->ID; } else { $redirect_url .= "?author=" . $current_user->ID; } wp_redirect( $redirect_url ); exit; break; } } } add_action( 'init', 'redirect_dashiboard' );
単純にURLをリダイレクトするだけです。当方がプラグイン化して使用しているものの一部抜粋ですので、ちゃんと動く保証もありませんので、適当に改造してください;)
あ、ページ用のコードかも∑(゜△゜;)
投稿用に改造してください・・・では、私は違うアプローチでプラグインで逃げる方法を。
いくつか似たようなプラグインもありますが role scoper を例にして。
http://wordpress.org/extend/plugins/role-scoper/Edit Others Posts (or Pages)
Delete Others Posts (or Pages)のチェックをはずせば自分の記事しか見えなくなると思います。
shokun0803さま
すいません、僕の知識では、適当に改造できませんでした。。。
そしてそのまま、コピーペーストしても、記事投稿でもページでも思った動きにはなりませんでした…。
もし時間があれば、もう少しヒントをいただけませんか?
よろしくお願いします。kvex様
role scoperを入れてみましたが、よく分かりませんでした(泣)
他のサイトでもあまり紹介されていないようで…。
shokun0803さんの方法でできなければ、もう一回挑戦したいと思います。わかりづらかったですか。
デフォルトなので気にしなくてもいいと思ったのですが。
ユーザを寄稿者にしておいて、上記プラグインを有効にするだけでお望みどおりの機能になると思います。/* -------------------------------------------- * ページの編集一覧表示を制御 * -------------------------------------------- */ function redirect_dashiboard() { global $current_user; get_currentuserinfo(); if ( !current_user_can('manage_options') ) { switch( true ) { case preg_match('/^\/wordpress(\/wp-admin\/edit\.php)(\?[^author][^=]+=[^&]+)?$/', $_SERVER['REQUEST_URI'], $author_url): case preg_match('/^\/wordpress(\/wp-admin\/edit\.php)(\?trashed=[\d]&ids=[\d][^&]+)?$/', $_SERVER['REQUEST_URI'], $author_url): $redirect_url = get_option('siteurl') . $author_url[1]; if( $author_url[2] ) { $redirect_url .= $author_url[2] . "&author=" . $current_user->ID; } else { $redirect_url .= "?author=" . $current_user->ID; } wp_redirect( $redirect_url ); exit; break; } } } add_action( 'init', 'redirect_dashiboard' );
いちおう、Twenty Ten 1.1でfunctions.phpに追記するだけで上記コードで動作確認しました。試してみてください。
プラグイン使用したほうが簡単だと思いますけどね~kvexさん、shokun0803さん
お返事ありがとうございました。
どちらの方法でも無事できました。
ですが、「寄稿者」や「投稿者」にした場合は望み通りになったのですが、ユーザー権限を「編集者」としたい場合は難しいですか?
もしできれば「編集者」として権限を与えてあげたいのですが…。
お忙しいところ申し訳ございませんが、よろしくお願いします。
このことが完結しましたら、「解決済み」にしたいと思います。ん?私のコードの場合はauthorIDでリダイレクトする方法なので、権限は関係なかったと思いますけど?編集者じゃ動きませんか?
プラグイン側でいうと、編集者だと編集をできる人なので、そこから絞る感じじゃないです。
寄稿者に、編集者に値する権限を追加する感じです。もしくは・・・
オリジナルのユーザロールを作って割り当てたほうが自由に決められますね(このように使うのプラグインの役目だと思います)
デフォルトのユーザグループの権限を崩すとわけわかんなくなっちゃう危険性もあるからでしょうね。shokun0803さん
動かないんです…。
「編集者」に設定するとすべてのユーザーの投稿が表示されてしまいます。
「投稿者」に設定すると、そのユーザーの投稿のみが表示されるんですが…。ああ、すみません・・・
if ( !current_user_can('manage_options') ) {
で管理権限がある人以外を制御していました・・・if ( !current_user_can('level_10') ) {
でどうでしょう?
shokun0803さん
ぼくも、
if ( !current_user_can(‘manage_options’) ) {
のところが怪しいと思い、いろいろ試して見たんですが、やはり「編集者」では全てのユーザーの投稿が表示されてしまいます。if ( !current_user_can(‘level_10’) ) {
でも駄目でした。ん~、やはり「編集者」としては無理なのでしょうか…。
おや?一応確認したんですけどねぇ。
まさかとは思いますが、権限を変更できるプラグインなどで編集者の権限をLevel10にしちゃってたりしないですよね?権限を変更できるプラグインは入れてません。
念のため、プラグインを全て停止して、デフォルトテーマ「twentyten」にして、functions.phpに<?php function redirect_dashiboard() { global $current_user; get_currentuserinfo(); if ( !current_user_can('level_10') ) { switch( true ) { case preg_match('/^\/wordpress(\/wp-admin\/edit\.php)(\?[^author][^=]+=[^&]+)?$/', $_SERVER['REQUEST_URI'], $author_url): case preg_match('/^\/wordpress(\/wp-admin\/edit\.php)(\?trashed=[\d]&ids=[\d][^&]+)?$/', $_SERVER['REQUEST_URI'], $author_url): $redirect_url = get_option('siteurl') . $author_url[1]; if( $author_url[2] ) { $redirect_url .= $author_url[2] . "&author=" . $current_user->ID; } else { $redirect_url .= "?author=" . $current_user->ID; } wp_redirect( $redirect_url ); exit; break; } } } add_action( 'init', 'redirect_dashiboard' ); ?>
を入力しました。
ん~なぜ上手くいかないんだろう…。一応
if ( !current_user_can('level_10') ) {~}
のif文を取り除けばすべてのユーザーに効くとは思いますが、管理者(admin)にまで及んじゃうと思うんですよね。
current_user_can()
の権限の書き方がよくわからなくて…誰か助けてPLEASE(泣)書き方に問題があるとしたら・・・
if ( current_user_can('level_10') === FALSE ) {
とかに変えても同じかなぁ???
- トピック「投稿一覧で、各ユーザーが投稿した記事のみを表示するには?」には新たに返信することはできません。