2012-04-04 32 views
5

Tôi có một mạng wp được cài đặt với người dùng có thể tạo các trang trong mỗi trang web.Làm thế nào để vô hiệu hóa tiêu đề của trang trong wp-admin không bị chỉnh sửa?

Mỗi trang trong số đó có một vị trí trong trình đơn chính và chỉ một người dùng được phép tạo tất cả menu này.

Tôi muốn tạo người dùng chỉ để có thể chỉnh sửa nội dung của các trang chứ không phải tiêu đề.

Làm cách nào để vô hiệu hóa tiêu đề của trang được chỉnh sửa từ menu quản trị cho một người dùng cụ thể hoặc (tốt hơn) cho khả năng?

Tôi nghĩ chỉ có một khả năng, đó là chỉnh sửa quản trị css để ẩn hộp tiêu đề, nhưng tôi có hai vấn đề:

  1. Tôi không muốn css ẩn thứ.
    1. Tôi không biết css quản trị ở đâu.
    2. Tôi biết php, nhưng không biết cách thêm ẩn CSS vào phần tử cho khả năng.

How do I want it to be

Trả lời

7

Bạn chắc chắn nên sử dụng CSS để ẩn div # titlediv. Bạn sẽ muốn tiêu đề hiển thị trong đánh dấu để việc gửi biểu mẫu, xác thực, v.v. tiếp tục hoạt động trơn tru.

Một số yếu tố bạn sẽ cần phải biết để thực hiện giải pháp này:

  1. current_user_can() là một hàm boolean mà kiểm tra nếu hiện đăng nhập người dùng có một khả năng hay vai trò.
  2. Bạn có thể thêm kiểu theo dòng thông qua hành động admin_head hoặc sử dụng wp_enqueue_style nếu bạn muốn lưu trữ nó trong một tệp CSS riêng biệt.

Đây là đoạn mã sẽ thực hiện công việc, đặt nó vào nơi bạn tìm thấy phù hợp, functions.php trong chủ đề của bạn hoạt động. Tôi muốn đặt nó bên trong một plugin mạng kích hoạt nếu bạn đang sử dụng chủ đề khác nhau trong mạng của bạn:

<?php 

add_action('admin_head', 'maybe_modify_admin_css'); 

function maybe_modify_admin_css() { 

    if (current_user_can('specific_capability') { 
     ?> 
     <style> 
      div#titlediv { 
       display: none; 
      } 
     </style> 
     <?php 
    } 
} 
?> 
+0

Thao tác này có thể ẩn Trang> Trang mới trong thanh trình đơn quản trị, nếu có bộ chọn CSS để tham chiếu mục nhập đó trong menu. Bạn có biết bộ chọn đó tồn tại không? – jperelli

0

tôi giải quyết vấn đề, chỉ cần nếu ai đó đến đây sử dụng một công cụ tìm kiếm, tôi đăng các giải pháp.

Thực hiện một số nghiên cứu, tôi đã tìm thấy một phần của mã nơi hộp văn bản tiêu đề được chèn vào và tôi đã tìm thấy a function to know if a user has a certain capability.

Tệp nơi hộp tiêu đề được thêm là /wp-admin/edit-form-advanced.php.Đây là dòng trước khi textbox

if (post_type_supports($post_type, 'title')) 

tôi đã thay đổi nó để này

if (post_type_supports($post_type, 'title') and current_user_can('edit_title')) 

Bằng cách đó, hộp văn bản được chỉ bổ sung khi người dùng đã khả năng gọi là "edit_title"

Khi điều này IF khối kết thúc vài dòng sau, tôi đã thêm:

else echo "<h2>".esc_attr(htmlspecialchars($post->post_title))."</h2>"; 

Để xem tiêu đề trang nhưng không chỉnh sửa nó, khi người dùng không có khả năng "edit_title".

Sau đó, tôi đã cài đặt plugin to edit user capabilities and roles, giúp tôi tạo khả năng mới (edit_title) và gán cho vai trò mà tôi muốn.

+4

Bạn không bao giờ nên chỉnh sửa các tệp lõi của Wordpress. Các bản cập nhật trong tương lai sẽ xóa bản hack này. –

+3

Bạn nói đúng, tôi thấy câu trả lời này 2 năm sau và tôi nghĩ đó chỉ là ngu ngốc. Nhưng tôi thấy tôi học được bao nhiêu. StackOverflow thật tuyệt vời. – jperelli

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