มีวิธี (ปลั๊กอินหรือไม่) ในการ จำกัด ผู้ใช้ให้สามารถแก้ไขได้เพียงหน้าเดียว


9

เราใช้ WordPress เป็น CMS และต้องการให้ผู้ใช้มี "หน้าแรก" เป็นการดีที่พวกเขาจะได้รับการป้องกันจากการแกล้งทำเว็บไซต์ทั้งหมด

มีวิธีง่ายๆในการ จำกัด สิทธิ์การแก้ไขผู้ใช้ในหน้าเดียวหรือไม่?

ขณะนี้ฉันใช้ปลั๊กอินสมาชิกเพื่อทำสิ่งที่ได้รับอนุญาตอื่น ๆ ดังนั้นจึงเป็นเรื่องที่ดีมากหากวิธีการแก้ปัญหาสามารถเพิ่มสิ่งนี้ได้อย่างเรียบร้อยหรือแทนที่ทั้งหมด

คะแนนโบนัสสำหรับการสร้างโฮมเพจโดยอัตโนมัติเมื่อมีการสร้างผู้ใช้ใหม่


อัปเดต: ฉันควรชี้แจงว่าหน้าเหล่านี้จำเป็นต้องถูก จำกัด ในพื้นที่เฉพาะของไซต์ (เช่นลูก ๆ ทุกคนในหน้าเดียวกัน) นอกจากนี้หลังจากพูดคุยกับผู้ใช้บางคนดูเหมือนว่าพวกเขาจะพบว่ามีประโยชน์ในการสร้างหน้าย่อยแยกย่อยจากหน้าแรกของพวกเขา

คำตอบ:


5

การติดตั้ง WordPress พื้นฐานอาจจะไม่ทำในสิ่งที่คุณต้องการ คุณสามารถตั้งค่าอินสแตนซ์หลายไซต์และอนุญาตให้ผู้ใช้มีไซต์ 'ย่อย' ของตนเองหรือใช้บางอย่างเช่น BuddyPress หรือ Mingle ที่มีคุณลักษณะโปรไฟล์ผู้ใช้


4

เสียใจที่ทำแบบนี้ แต่ผมเจอคำตอบในเว็บบอร์ดเวิร์ดเพรส

ปรากฎว่าRole Scoperทำได้ดีมาก ผู้เขียนของโพสต์ฟอรั่มกล่าวว่าดีที่สุด:

ในการทำให้ผู้ใช้สามารถแก้ไขหน้าใดหน้าหนึ่งได้ แต่ไม่ใช่สิ่งอื่น:

  1. ให้บทบาท WordPress แก่สมาชิก
  2. จัดการ> หน้า> แก้ไขหน้า
  3. ขยายแท็บ "บรรณาธิการ" ภายใต้ "ตัวเลือกขั้นสูง"
  4. ทำเครื่องหมายในช่องทำเครื่องหมายที่ไม่ต้องใส่เครื่องหมายวงเล็บทางด้านซ้ายของชื่อผู้ใช้ของคุณ (หากจะสร้างหน้าย่อยให้ตรวจสอบช่องทำเครื่องหมายที่ใส่เครื่องหมายวงเล็บปีกกา {[]} ซึ่งกำหนดบทบาทสำหรับหน้าย่อยหรือหน้าปัจจุบันทั้งหมด)
  5. บันทึกหน้า

เสียงเหมือนกระบวนการแมนนวล ถ้าคุณมีผู้ใช้หลายพันคน
MikeSchinkel

นั่นเป็นเรื่องจริง แต่ก็ใกล้เคียงที่สุด ฉันจะเปิดให้รางวัลจนกว่าจะจบ
Tom Wright

3

ฉันเผชิญสถานการณ์เดียวกับคุณและสิ่งที่ฉันทำคือสร้างประเภทโพสต์ที่กำหนดเองชื่อ "โฮมเพจ" และสร้างปลั๊กอิน "ข้อ จำกัด การสร้างโพสต์ Bainternet" เพื่อ จำกัด การสร้างโพสต์แต่ละประเภทต่อผู้ใช้ ลองใช้เลยhttp://wordpress.org/extend/plugins/bainternet-posts-creation-limits/


วิธีการที่เรียบง่ายดี ปัญหาเล็กน้อยเกี่ยวกับการโพสต์ - ฉันต้องการ จำกัด ว่าหน้าเว็บนั้นอยู่ที่ใด
Tom Wright

จำกัด หน้าอยู่ที่ไหน สนใจที่จะอธิบาย?
Bainternet

ดังนั้นปัญหาที่นี่คือฉันต้องการมีหน้าผู้ใช้ทั้งหมดในที่เดียวกัน เช่น mysite.com/users/bob Plus ฉันต้องการอนุญาตหน้าย่อยในสไตล์เดียวกัน: mysite.com/users/bob/mysubpage
Tom Wright

2

ปลั๊กอิน User Access Manager จะทำสิ่งนี้ให้คุณวิธีการอื่น ๆ ทั้งหมดนั้นซับซ้อนเกินไป UAM นั้นง่ายเพียงตั้งค่ากลุ่มและกำหนดกลุ่มให้กับเพจย่อยของคุณพร้อม



1

การแก้ปัญหากำหนดว่าคุณได้ปิดการแก้ไขประเภทโพสต์ "ปกติ" (โพสต์, หน้า)

มันไม่ยากอย่างที่คุณคิด สำคัญเป็นชื่อเข้าสู่ระบบของผู้ใช้ เช่นเดียวกับ taxonomies หรือแม้แต่เงื่อนไข

ดูต่อไปนี้ (มีตัวอย่างของแบบสอบถามด้วย):

// 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

ด้วย taxonomies สิ่งนี้จะทำให้เข้าใจได้ง่ายขึ้นเนื่องจากคุณสามารถค้นหาเฉพาะการโพสต์ที่ติดแท็กด้วยคำศัพท์จาก taxonomies ของผู้ใช้รายนี้ แต่จะต้องมีกล่องเมตาโพสต์ที่มีเงื่อนไข taxonomy ของผู้ใช้ เงื่อนไขจะเหมือนกัน: ชื่อล็อกอินของผู้ใช้และคุณเพียงแค่เพิ่มอนุกรมวิธาน:

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) อาจเป็นที่อื่นเช่นกัน ขึ้นอยู่กับความต้องการเฉพาะของคุณ เพียงเพื่อให้แน่ใจว่า: นี่คือตัวอย่างที่จะแนะนำคุณเกี่ยวกับวิธีการแก้ปัญหา หวังว่าจะช่วย :)


0

ฉันได้ทำสิ่งที่คล้ายกับ "สมาชิก" ประเภทโพสต์ที่กำหนดเองและการกำหนดสิทธิ์ของผู้เขียนด้วยตนเองให้กับสมาชิกที่เฉพาะเจาะจงเนื่องจากเป็นเว็บไซต์กลุ่มเล็ก ๆ แต่ฉันจำได้ว่าอ่านในเธรดสนับสนุนเพื่อนที่เป็นไปได้ เพื่อขอเข้าสู่กระบวนการสมัครสมาชิกดังนั้นฉันคิดว่ามันเป็นไปได้ที่จะสร้างประเภทโพสต์ของหน้า / กำหนดเองต่อผู้ใช้ในการสมัครและกำหนดหน้านั้นให้สมาชิกที่สร้างขึ้นใหม่เป็นหน้าแรกโดยอัตโนมัติ ฉันยังเพิ่มเครื่องมือแก้ไขส่วนหน้าของ Scribu และบล็อกส่วนหลังให้กับสมาชิกที่ไม่ใช่ผู้ดูแลระบบ คุณยังสามารถเพิ่มการเปลี่ยนเส้นทางในการสมัครสมาชิกเพื่อให้สมาชิกใหม่ถูกเปลี่ยนเส้นทางไปยังหน้าของพวกเขา (ซึ่งฉันคิดว่าอาจมีเนื้อหาเริ่มต้น)

ฉันจะดูว่าฉันสามารถหาเพื่อนที่สนับสนุนเธรด

ภาคผนวก - มีข้อบกพร่องในตัวเลือกผู้แต่งในฟิลด์แก้ไขโพสต์ ขณะนี้ไม่ได้ใช้ระบบการอนุญาตมาตรฐานซึ่งอาจทำให้วิธีแก้ไขปัญหาของสมาชิกยากขึ้น (แม้ว่าอาจจะใช้งานได้หากผู้เขียนได้รับมอบหมายในการสร้างหน้า) มีแพทช์ใน trac แต่ฉันไม่คิดว่ามันจะถูกนำไปใช้กับแกนกลาง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.