web-dev-qa-db-ja.com

ユーザーが1ページしか編集できないように制限する方法(プラグイン?)はありますか?

私たちはCMSのようなワードプレスを使い、ユーザーが「ホームページ」を持つことを可能にしたいと思います。理想的には、彼らはサイト全体を無駄にすることを防がれるでしょう。

ユーザーの編集権限を1ページに制限する簡単な方法はありますか?

私は現在 Membersプラグイン を使って他のパーミッションベースのことをしているので、解決策がこれをきちんと強化するか、あるいは完全に置き換えることができれば素晴らしいでしょう。

新しいユーザーが作成されたときにホームページを自動的に作成するためのボーナスポイント。


更新:これらのページはサイトの特定の領域(つまり、同じページのすべての子)に限定する必要があることを明確にする必要があります。また、何人かのユーザーに話した後、彼らは彼らのホームページから分岐しているサブページを作成することが有用であると思うようです。

9
Tom Wright

申し訳ありませんが、Wordpressフォーラムで という回答に出会いました

Role Scoper はこれを本当にうまくやっていることがわかります。そのフォーラム投稿の著者はそれが最も良いと言いました:

ユーザーが1つの特定のページを編集できるようにしますが、それ以外は編集できません。

  1. それらに購読者のワードプレスの役割を与えなさい
  2. 管理>ページ>自分のページを編集
  3. [詳細オプション]の下の[エディタ]タブを展開します。
  4. ユーザーの名前の左側にある括弧で囲まれていないチェックボックスをオンにします(子ページを作成する場合は、現在または将来のすべての子ページにロールを割り当てる括弧付きの{{]}チェックボックスもオンにします)
  5. ページを保存する
4
Tom Wright

基本的なWordPressのインストールはおそらくあなたが望むことをしないでしょう。複数サイトのインスタンスを設定して、ユーザーが自分の「サブ」サイトを持つことを許可するか、BuddyPressやMingleのようにユーザープロファイル機能を持​​つものを使用することができます。

5
Norcross

私はあなたと同じ状況に直面し、私がしたのは "homepage"という名前のカスタム投稿タイプを作成し、さらにユーザーごとに各投稿タイプの作成を制限するために "Bainternet Posts Creation Limits"プラグインを作成しました。試してみる http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/ /

3
Bainternet

User Access Manager Pluginがこれを行います。他の方法はすべて非常に複雑です。 UAMは、簡単にグループをセットアップし、サブグループにそのグループを割り当てることができます。

2
BUGHUNTER

解決策は、「通常の」投稿タイプ(投稿、ページ)の編集を無効にしたことを意味します。

それはあなたが信じているほど難しいnotです。 keyユーザーログイン名です。分類法や用語でも同じことができます。

以下を参照してください(クエリの例もあります)。

// 1st: Add a post type for that user with it's 
//   user login & according capabilities 
function create_user_home() {
    global $current_user;
    get_currentuserinfo();

    register_post_type(
        'home_of_'.$current_user->user_login,
        array(
            'public' => true,
            'capability_type' => $current_user->user_login,
            'capabilities' => array(
                'publish_posts' => 'publish_'.$current_user->user_login,
                'edit_posts' => 'edit_'.$current_user->user_login,
                'edit_others_posts' => 'edit_'.$current_user->user_login,
                'delete_posts' => 'delete_'.$current_user->user_login,
                'delete_others_posts' => 'delete_others_'.$current_user->user_login,
                'read_private_posts' => 'read_private_'.$current_user->user_login,
                'edit_post' => 'edit_'.$current_user->user_login,
                'delete_post' => 'delete_'.$current_user->user_login,
                'read_post' => 'read_'.$current_user->user_login,
            ),
        )
    );
}
add_action( 'init', 'create_user_home' );

// A query could be done like this:
wp_reset_query(); // to be sure

global $wp_query, $current_user;
get_currentuserinfo();

$query_user_home = new WP_Query( array(
    ,'order'        => 'ASC'
    ,'post_type'    => 'home_of_'.$current_user->user_login
    ,'post_status'  => 'publish'
) );

if ( $query_user_home->have_posts() ) :
    while ( $query_user_home->have_posts() ) : $query_user_home->the_post();
        // check for password
        if ( post_password_required() ) :
            the_content();
        elseif ( !current_user_can('') ) :
            // display some decent message here
            return;
        else :

            // here goes your content

        endif;
    endwhile;

else : // else; no posts
    printf(__( 'Nothing from Mr./Mrs. %1$s so far.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();

wp_rewind_posts(); // for a sec. query

分類法では、このユーザー分類法からの用語でタグ付けされた投稿のみを照会できますが、ユーザー分類用語を含む投稿メタボックスが必要になるため、これはさらに意味があります。条件は同じです。ユーザーのログイン名で、分類を追加するだけです。

function create_user_tax() {
    if ( current_user_can("$current_user->user_login") ) :
        global $current_user;
        get_currentuserinfo();

        $singular = $current_user->user_login;
        $plural = $singular.'\'s';

        // labels
        $labels = array (
                 'name'         => $plural
                ,'singular_name'=> $singular
            );

        // args
        $args = array (
             'public'               => true
            ,'show_in_nav_menus'    => true
            ,'show_ui'              => true
            ,'query_var'            => true
            ,'labels'               => $labels
            ,'capabilities' => array(
                'manage_'.$current_user->user_login
            )
        );

        // Register
        register_taxonomy ( 
             $current_user->user_login
            ,array ( 'post', 'page' )
            ,$args
        ); 
        // Add to post type
        // you can even add your current user post type here
        register_taxonomy_for_object_type (
             $current_user->user_login
             ,array ( 'post', 'page', 'home_of_'.$current_user->user_login ) 
        );
    endif;
}
add_action( 'init', 'create_user_tax' );

機能チェック(current_user_can)の配置は他の場所でも可能です。あなたの特定のニーズにすべて依存します。これを確実にするために:これらはあなたの解決への道を案内するための例です。 補助 :)を願っています

1
kaiser

これを行うには、 Capability Manager またはcodexのロールと機能をチェックします。

1
Ben West

これはプラグインs2memberで可能です、無料版で十分です。私は各クライアントがここにビデオチュートリアルがあるURLを持っているクライアント領域を作成しました: http://www.primothemes.com/forums/viewtopic.php?f=4&t=586&start=0&hilit=client+area

0
paul

私は「メンバー」、カスタム投稿タイプ、そして特定のメンバーへの作者の権利の手動割り当てと似たようなことをしています。そのため、サインアップ時にユーザーごとにページ/カスタム投稿タイプを自動的に作成し、その特定のページをホームページとして新しく作成されたメンバーに割り当てることが可能になると思います。私はScribuのフロントエンドエディタも追加し、管理者ではないメンバーへのバックエンドをブロックしました。また、新規会員が自分のページにリダイレクトされるように登録時にリダイレクトを追加することもできます(これはデフォルトのコンテンツがある可能性があります)。

私はそのbuddypressサポートスレッドを見つけることができるかどうか見るでしょう。

補遺 - 投稿編集フィールドの作者セレクタにバグがあります。現在のところ標準のパーミッションシステムを使用していないため、メンバーの解決がより困難になる可能性があります(ただし、作者がページ作成時に割り当てられている場合はおそらく機能します)。 tracにパッチがありますが、まだコアには適用されていないと思います。

0
user2789