Có cách nào (plugin không?) Để hạn chế người dùng có thể chỉnh sửa chỉ một trang?


9

Chúng tôi sử dụng wordpress như một CMS và rất muốn cho phép người dùng có "trang chủ". Lý tưởng nhất là họ sẽ bị ngăn chặn toàn bộ trang web.

Có cách nào đơn giản để giới hạn quyền chỉnh sửa của người dùng đối với một trang không?

Tôi hiện đang sử dụng plugin Thành viên để thực hiện các công cụ dựa trên quyền khác, vì vậy thật tuyệt nếu một giải pháp có thể làm gọn gàng điều này hoặc thay thế hoàn toàn.

Điểm thưởng cho việc tự động tạo trang chủ khi người dùng mới được tạo.


CẬP NHẬT: Tôi nên làm rõ rằng các trang này cần được giới hạn trong một khu vực cụ thể của trang web (tức là tất cả trẻ em của cùng một trang). Ngoài ra, sau khi nói chuyện với một số người dùng, có vẻ như họ thấy hữu ích khi tạo các trang con phân nhánh từ trang chủ của họ.

Câu trả lời:


5

Một bản cài đặt WordPress cơ bản có thể sẽ không làm những gì bạn muốn. Bạn có thể thiết lập một phiên bản nhiều trang web và cho phép người dùng có trang web 'phụ' của riêng họ hoặc sử dụng một cái gì đó như BuddyPress hoặc Mingle có tính năng hồ sơ người dùng.


4

Xin lỗi để làm điều này, nhưng tôi tình cờ thấy câu trả lời trong các diễn đàn wordpress .

Nó chỉ ra rằng Vai trò Scoper làm điều này thực sự tốt. Tác giả của bài viết diễn đàn đó đã nói điều đó tốt nhất:

Để cho phép người dùng chỉnh sửa một trang cụ thể, nhưng không phải bất cứ điều gì khác:

  1. Cung cấp cho họ vai trò WordPress của Người đăng ký
  2. Quản lý> Trang> Chỉnh sửa trang của họ
  3. Mở rộng tab "Trình chỉnh sửa" trong "Tùy chọn nâng cao"
  4. Chọn hộp kiểm không có dấu ngoặc ở bên trái tên người dùng của bạn (nếu các trang con sẽ được tạo, đồng thời kiểm tra hộp kiểm giằng {[]}, để gán vai trò cho tất cả các trang con hiện tại hoặc tương lai)
  5. Lưu trang

Âm thanh như một quá trình thủ công. Nếu bạn có hàng ngàn người dùng thì sao?
MikeSchinkel

Điều đó chắc chắn đúng, nhưng nó là gần nhất cho đến nay. Tôi sẽ giữ tiền thưởng mở cho đến khi kết thúc.
Tom Wright

3

Tôi đã đối mặt với tình huống tương tự như bạn và những gì tôi đã làm là tạo một loại bài đăng tùy chỉnh có tên "trang chủ" và cũng tạo ra plugin "Giới hạn tạo bài đăng trên Internet" để giới hạn việc tạo từng loại bài đăng cho mỗi người dùng. Hãy dùng thử http://wordpress.org/extend/plugins/ Bạch Internet-posts-creation-limits /


Cách tiếp cận đơn giản tốt đẹp. Vấn đề nhỏ với nó là dựa trên bài đăng - Tôi cũng muốn giới hạn trang đang ở đâu.
Tom Wright

giới hạn trang ở đâu? quan tâm để giải thích?
Bai Internet

Vì vậy, vấn đề ở đây là tôi muốn có tất cả các trang người dùng ở cùng một nơi. Tức là mysite.com/users/bob Plus, tôi cũng muốn cho phép các trang phụ theo cùng một kiểu: mysite.com/users/bob/mysubpage
Tom Wright

2

Plugin Trình quản lý truy cập người dùng sẽ thực hiện việc này cho bạn, tất cả các cách tiếp cận khác đều quá phức tạp. UAM chỉ đơn giản, thiết lập các nhóm và gán nhóm cho các trang phụ của bạn, sẵn sàng.



1

Thông báo này ngụ ý rằng bạn đã vô hiệu hóa việc chỉnh sửa các loại bài đăng "bình thường" (bài đăng, trang).

không khó như bạn có thể tin. Các chìa khóatên người dùng đăng nhập . Điều tương tự có thể được thực hiện với các nguyên tắc phân loại hoặc thậm chí các điều khoản.

Xem phần sau (cũng có ví dụ cho truy vấn):

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

Với các nguyên tắc phân loại, điều này thậm chí sẽ có ý nghĩa hơn, bởi vì bạn chỉ có thể truy vấn các bài đăng được gắn thẻ với các thuật ngữ từ phân loại người dùng này, nhưng điều đó sẽ cần một hộp meta bài với các thuật ngữ phân loại người dùng. Điều kiện sẽ giống nhau: tên đăng nhập của người dùng và bạn chỉ cần thêm phân loại:

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' );

Vị trí kiểm tra khả năng (current_user_can) cũng có thể ở một nơi khác. Phụ thuộc tất cả vào nhu cầu cụ thể của bạn. Chỉ cần làm cho điều này chắc chắn: Đây là những ví dụ để hướng dẫn bạn trên con đường tìm kiếm sự giải quyết. Mong rằng sẽ giúp :)


0

Tôi đã làm một cái gì đó tương tự với "thành viên", loại bài đăng tùy chỉnh và gán quyền tác giả thủ công cho một thành viên cụ thể, vì đó là một trang web nhóm nhỏ, nhưng tôi nhớ đọc trong một số chủ đề hỗ trợ báo chí bạn bè có thể để tham gia vào quá trình đăng ký, vì vậy tôi cho rằng có thể tự động tạo một trang / loại bài đăng tùy chỉnh cho mỗi người dùng khi đăng ký và gán trang cụ thể đó cho thành viên mới được tạo làm trang chủ. Tôi cũng đã thêm trình soạn thảo front-end của Scribu và chặn phần phụ trợ cho các thành viên không phải là quản trị viên. Bạn có thể cũng có thể thêm một chuyển hướng khi đăng ký để các thành viên mới được chuyển hướng đến trang của họ (mà tôi cho rằng, có thể có một số nội dung mặc định).

Tôi sẽ xem nếu tôi có thể tìm thấy chủ đề hỗ trợ bạn bè.

Phụ lục - có một lỗi trong bộ chọn tác giả trên trường chỉnh sửa bài đăng. Hiện tại nó không sử dụng hệ thống cấp phép tiêu chuẩn, điều này có thể làm cho giải pháp thành viên trở nên khó khăn hơn (mặc dù nó có thể sẽ hoạt động nếu tác giả được chỉ định khi tạo trang). Có một bản vá trong trac, nhưng tôi không nghĩ nó đã được áp dụng cho lõi.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.