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

wordpress.stackexchange https://wordpress.stackexchange.com/questions/1736

質問

WordPressをCMSのように使用しており、ユーザーが「ホームページ」を持つことができるようにしたいと考えています。理想的には、彼らはサイト全体をマッキングすることを妨げられるでしょう。

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

私は現在使用しています メンバープラグイン 他の許可ベースのことを行うには、ソリューションがこれをきちんと補強するか、完全に交換できるかどうかは素晴らしいことです。

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


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

役に立ちましたか?

解決 2

これをして申し訳ありませんが、私は答えにつまずきました WordPressフォーラムで.

それはそうだとわかります ロールスコーパー これは本当にうまくいきます。そのフォーラム投稿の著者は、それが最もよく言った:

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

  1. サブスクライバーのWordPressロールを提供します
  2. >ページを管理>ページを編集します
  3. 「Advanced Options」の下に「エディター」タブを展開します
  4. ユーザーの名前の左側にあるブレースされていないチェックボックスを確認します(チャイルドページが作成される場合は、現在または将来のすべての子ページに役割を割り当てるブレースチェックボックス{[]}もチェックします)
  5. ページを保存します

他のヒント

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

私はあなたと同じ状況に直面し、私がしたことは「ホームページ」という名前のカスタム投稿タイプを作成し、「Bainternet Post Creation limits」プラグインを作成して、ユーザーごとの各投稿タイプの作成を制限しました。やってみよう http://wordpress.org/extend/plugins/bainternet-posts-creation-limits/

ユーザーアクセスマネージャープラグインがこれを行い、他のすべてのアプローチは非常に複雑すぎます。 UAMは簡単なセットアップグループで、グループをサブページに割り当てます。

私は使用します 機能マネージャー または、これを行うためにCodexの役割と機能をチェックしてください。

ソリューションは、「通常の」投稿タイプ(投稿、ページ)の編集を無効にしたことを意味します。

これは いいえ あなたが信じているかもしれません。 それは ユーザーログイン名. 。同じことは、分類法や条件でも行うことができます。

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

// 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)も他の場所にある可能性があります。すべての特定のニーズに依存します。これを確かにするために:これらは、軟害への道を導くための例です。それを願っています 役立ちます :)

「メンバー」、カスタム投稿タイプ、特定のメンバーへの著者の権利の手動での割り当てで同様のことをしました。なぜなら、それは小グループのウェブサイトであるため、バディプレスサポートスレッドで読んだことを覚えています。サインアッププロセスに接続するために、サインアップ時にユーザーごとにページ/カスタム投稿タイプを自動的に作成し、その特定のページを新しく作成したメンバーにホームページとして割り当てることができると思います。また、Scribuのフロントエンドエディターを追加し、管理者ではないメンバーにバックエンドをブロックしました。おそらく、サインアップにリダイレクトを追加することができるため、新しいメンバーがページにリダイレクトされることもあります(デフォルトのコンテンツを持つことができると思います)。

そのBuddyPressサポートスレッドを見つけることができるかどうかを確認します。

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

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

ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top