2011-06-13 20 views
5


Tôi đã thêm một loại người dùng tùy chỉnh trong Wordpress, các tùy chỉnh bài kiểu hỗ trợ tác giả (Xem bên dưới). Loại người dùng tùy chỉnh có tất cả đặc quyền của tác giả ngoại trừ 'xuất bản bài đăng', nhưng là không phải là trên danh sách các tác giả có thể gán cho bài đăng.WordPress: Người dùng tùy chỉnh không xuất hiện trong hộp Tác giả

Tôi đang làm gì sai?

Code:

if (!get_role('member')) { 
     add_role('member', 'SFUK Member', array(
      'delete_posts' => true, 
      'edit_posts' => true, 
      'read' => true, 
      'upload_files' => true, 
      'edit_published_posts' => true, 
      'delete_published_posts' => true 
     )); 
} 

và đây là loại bài tùy chỉnh:

$args = array(
    'labels' => $labels, 
    'public' => true, 
    'publicly_queryable' => true, 
    'show_ui' => true, 
    'query_var' => true, 
    'rewrite' => true, 
    'capability_type' => 'post', 
    'hierarchical' => true, 
    'menu_position' => 0, 
    'supports' => array('title', 'editor', 'thumbnail', 'page-attributes', 'author') 
); 

if (!post_type_exists('ent')) { 
    register_post_type('ent', $args); 
    remove_post_type_support('ent', 'editor'); 

} 

Hãy cho tôi biết nếu cần thêm thông tin.

+0

Đặc quyền của người dùng có hoạt động trong wp-admin không? theo cách bạn mong đợi nó? ... Ngoài ra bạn có đang sử dụng một chủ đề/widget tùy chỉnh để hiển thị tên tác giả khi được xuất bản không ?, nó có hiển thị giá trị sai không ?, hoặc chỉ để trống. Có rất nhiều cách khác có thể đã được thực hiện sai đáng buồn = [ – PicoCreator

+0

Ngoài ra, các tệp đoạn mã của bạn xuất phát từ = P – PicoCreator

Trả lời

6

Các tác giả thả xuống được tạo cuộc gọi sau đây:

wp_dropdown_users(array(
    'who' => 'authors', 
    'name' => 'post_author_override', 
    'selected' => empty($post->ID) ? $user_ID : $post->post_author, 
    'include_selected' => true 
)); 

Đối số who có nghĩa là chỉ những người dùng có ít nhất 'giả' vai trò sẽ được liệt kê, và the Codex page nói rằng hiện nay nó là một trong hai tác giả 'hoặc rỗng (nghĩa là tất cả người dùng). Có bộ lọc cho chức năng này nhưng nó lấy HTML làm đầu vào. Bạn có thể tạo một truy vấn mới cho người dùng và sau đó xuất ra một trình đơn thả xuống HTML mới. Đây là cách đầu tiên để giải quyết vấn đề của bạn.

Tuy nhiên, chức năng này với 'ai' được đặt thành tìm kiếm 'tác giả' cho người dùng có cấp độ không phải là 0, điều này khá lạ vì mức người dùng không được dùng từ lâu. Tôi đã tìm thấy a related bug report trên Trac đề xuất rằng bạn thêm chức năng 'level_1' vào vai trò mới của bạn để sửa lỗi này. Đây không phải là giải pháp sạch nhưng dễ dàng hơn nhiều so với việc tạo bộ lọc và tất cả HTML từ đầu.

EDIT: Một giải pháp thứ ba và thậm chí đơn giản hơn chỉ lóe lên trong óc tôi: Tôi đã tạo vai trò tùy chỉnh với các plugin nhưng không bao giờ nhận thấy vấn đề này bởi vì tôi đã luôn khả năng sao chép từ vai trò hiện và sau đó thay đổi chúng. Bằng cách này bạn sẽ không quên bất kỳ khả năng nào và nó cũng sẽ sửa lỗi này.

+1

+1 cho liên kết đến lỗi WP –

+0

OK, tôi đã thêm khả năng level_1, nhưng không giúp được gì . Làm thế nào tôi có thể sao chép các khả năng từ một vai trò hiện có. Tôi không thể nghĩ ra một cách gọn gàng để làm điều đó. – Sean

+0

Đảm bảo rằng bạn đã xóa vai trò tùy chỉnh đã tạo trước đó vì add_role không làm gì nếu vai trò đã tồn tại (do đó bạn không cần 'if'). Dù sao, đây là cách tôi đã làm nó: http://wordpress.org/support/topic/creating-a-role-based-on-another?replies=2 và một ví dụ khác: http://wordpress.org/support/ topic/add-a-custom-role-based-on-default-role? reply = 1 –

Các vấn đề liên quan