Làm cách nào tôi có thể loại bỏ nút Thêm Thêm Mới trong loại bài đăng tùy chỉnh của mình?


9

Tôi có nhiều loại bài đăng tùy chỉnh cần tính năng Thêm [loại bài đăng tùy chỉnh] nhưng tôi có loại bài đăng tùy chỉnh "Giới thiệu" và tôi không cần "Thêm mới" về loại bài đăng tùy chỉnh. Vì vậy, tôi muốn loại bỏ nút trên đầu có nội dung "Thêm về"

Đó là thứ tôi nghĩ:

nhập mô tả hình ảnh ở đây

Bất cứ ý tưởng làm thế nào tôi có thể loại bỏ điều đó?

Câu trả lời:


5

Xin vui lòng tham khảo dưới đây :

function disable_new_posts() {
    // Hide sidebar link
    global $submenu;
    unset($submenu['edit.php?post_type=CUSTOM_POST_TYPE'][10]);

    // Hide link on listing page
    if (isset($_GET['post_type']) && $_GET['post_type'] == 'CUSTOM_POST_TYPE') {
        echo '<style type="text/css">
        #favorite-actions, .add-new-h2, .tablenav { display:none; }
        </style>';
    }
}
add_action('admin_menu', 'disable_new_posts');

Cảm ơn thực sự đánh giá cao nó, chỉ là một câu hỏi khác về mã. Nó có thể được sử dụng để loại bỏ các elemnts khác trên cùng một trang không? ví dụ như "Tìm kiếm Giới thiệu" cho nghi thức.
Lucas Santos

Có, nhưng bạn cần thay đổi các yếu tố cần thiết trong mã.
Giúp đỡ

33

Một giải pháp đẹp hơn sẽ là vô hiệu hóa khả năng tạo custom_post_type:

Chỉ cần chuyển tham số 'create_posts' => false, trong mảng khả năng khi gọi register_post_type .

$args = array(
        'label'               => __( 'Custom Post Type', 'text_domain' ),
        'description'         => __( 'Custom Post Type', 'text_domain' ),
        'labels'              => $labels,
        'supports'            => array( ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'map_meta_cap'        => true,
        'capability_type' => 'custom_post_type',
        'capabilities' => array(
            'create_posts' => false
        )
    );
    register_post_type( 'custom_post_type', $args );

Có một nhược điểm để làm theo cách này? Đây có vẻ là một giải pháp tốt hơn nhiều so với việc chỉ ẩn các liên kết với CSS.
Nick Young

Khẳng định rằng điều này hoạt động! Nó phải là câu trả lời được chấp nhận vì nó không dựa vào các bản hack CSS.
xe đạp vào

1
Không xuất hiện để làm việc trên 4.7.2... Bên cạnh đó. Nó thậm chí không được chấp nhận một booleangiá trị. Nó phải là một stringgiá trị của : do_not_allow.
Michael Ecklund

không phải là một giải pháp ưa thích, đôi khi bạn không thể chỉ tạo "bài đăng" mà không có bối cảnh được xác định trước. Đôi khi chỉ là kẹo UX và thay thế của việc cố gắng cung cấp các khả năng dựa trên bối cảnh trong quản trị viên là cơn ác mộng không thể duy trì.
Đánh dấu Kaplun

Có một lỗi WP liên quan # 22895 ( core.trac.wordpress.org/ticket/22895 ) khiến trang edit.php cho CPT không được hiển thị nếu chỉ có mục trình đơn "Tất cả bài đăng" trong menu con quản trị viên CPT . Có một cách giải quyết cho nó tại wordpress.stackexchange.com/questions/178033/ Ấn .
jarnoan

3

Đã chỉnh sửa câu trả lời của @ TompaLompa vì nó chưa hoàn chỉnh. Thêm create_posts => falsesẽ không hoạt động nếu map_meta_capkhông được đặt thành true.

Không đặt tham số này (hoặc cài đặt thành false) cũng sẽ vô hiệu hóa chỉnh sửa loại bài đăng. Điều này là do bạn sẽ cần thêm edit_postkhả năng cho từng vai trò người dùng để thêmchỉnh sửa loại bài đăng của mình.

Đặt tham số này sẽ sử dụng xử lý khả năng meta mặc định bên trong của WP và làm cho nó hoạt động cho bạn nếu bạn không cần kiểm soát tốt hơn đối với các khả năng của vai trò sau đó là các WP mặc định.


1

Sau đó, nếu bạn chỉ muốn xóa Thêm mới và bạn không sử dụng custom_post_type, bạn không nên sử dụng 'capability_type' => 'custom_post_type'. Bạn nên loại bỏ mã này. Chúc may mắn :)

Vì vậy, bản demo dưới đây:

array(
'labels' => $member_labels,
'has_archive' => true,
'public' => true,
'hierarchical' => true, // like page
'rewrite' => array('slug' => 'member_pages'),
'supports' => array(
    'title',
    'editor',
    'excerpt',
    'custom-fields',
    'thumbnail',
    'page-attributes',
),
'taxonomies' => array('post_tag', 'cm_club'),
// 'capability_type' => 'custom_post_type',
'capabilities' => array(
    'create_posts' => false,
),
'map_meta_cap' => true,
)

0

Cách tốt nhất tôi cảm thấy là cài đặt plugin add-admin-javascript và kích hoạt nó sau đó vào cài đặt và thêm javascript viết mã này vào hộp cuối cùng

$('.wrap .wp-heading-inline').remove();
$('.wrap .page-title-action').remove();
$('#wp-admin-bar-new-content').remove();
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.