2011-09-30 51 views
5

Tôi đã tạo loại bài đăng tùy chỉnh có tên danh mục đầu tư có hỗ trợ phân loại thẻ.Wordpress - Xóa menu phụ từ loại bài đăng tùy chỉnh

Vì WP không tạo sự khác biệt giữa thẻ bài và thẻ loại bài tùy chỉnh, tôi đã tạo một mục menu Phân loại theo đó tôi muốn đặt danh mục và thẻ bài. Tôi đã quản lý để tạo menu và menu phụ, đồng thời cũng xóa danh mục và thẻ bài khỏi menu Bài đăng nhưng tôi không quản lý để xóa Thẻ bài đăng khỏi menu loại bài đăng tùy chỉnh.

tôi đã cố gắng:

remove_submenu_page('edit.php?post_type=portfolio', 'edit-tags.php?taxonomy=post_tag&post_type=portfolio'); 

Trả lời

6

Đây là một chút bẩn, nhưng nó hoạt động:

add_action('admin_menu', 'remove_niggly_bits'); 
function remove_niggly_bits() { 
    global $submenu; 
    unset($submenu['edit.php?post_type=portfolio'][11]); 
} 

Tôi không chắc chắn chính xác mà phím số bạn sẽ muốn loại bỏ. Cách tốt nhất để thấy rằng là để làm:

add_action('admin_menu', 'remove_niggly_bits'); 
function remove_niggly_bits() { 
    global $submenu; 
    //unset($submenu['edit.php?post_type=portfolio'][11]); 
    print_r($submenu); exit; 
} 

Mọi thứ sẽ phá vỡ khi bạn tải khu vực quản trị đến khi bạn xóa dòng đó, nhưng nó sẽ cho bạn thấy cấu trúc và những phím mà bạn cần.

+0

Nó hơi bẩn. Tôi hy vọng cho nó để làm việc với remove_submenu_page(), nhưng vì nó là chỉ (làm việc) câu trả lời bạn nhận được câu trả lời được chấp nhận :-) –

16

Bạn có thể sử dụng remove_submenu_page() - tuy nhiên, thủ thuật là để có được con sên chính xác, để làm điều này, cách dễ nhất là đổ toàn bộ $ menu phụ chung và kiểm tra menu_slug và submenu_slug.

global $submenu; 
var_dump($submenu); 

Điều này sẽ cung cấp cho bạn một loạt các menu, khóa cấp cao nhất là menu_slug và sau đó có thể tìm thấy submenu_slug chính xác trong phần tử 2 của các mảng lồng nhau.

Vì vậy, nếu tôi đã có một loại bài tùy chỉnh được gọi là "my_events" và tôi muốn loại bỏ menu thẻ từ nó, cấu trúc menu ban đầu của tôi sẽ trông như thế này

... 
'edit.php?post_type=my_events' => 
    array 
     5 => 
     array 
      0 => string 'All Events' (length=10) 
      1 => string 'edit_posts' (length=10) 
      2 => string 'edit.php?post_type=my_events' (length=28) 
     10 => 
     array 
      0 => string 'Add New' (length=7) 
      1 => string 'edit_posts' (length=10) 
      2 => string 'post-new.php?post_type=my_events' (length=32) 
     15 => 
     array 
      0 => string 'Tags' (length=4) 
      1 => string 'manage_categories' (length=17) 
      2 => string 'edit-tags.php?taxonomy=post_tag&post_type=my_events' (length=55) 
... 

Từ đây bạn có thể thấy rằng menu_slug là 'edit.php?post_type=my_events' và thanh menu phụ cho trình đơn thẻ là 'edit-tags.php?taxonomy=post_tag&post_type=my_events'.

Vì vậy, loại bỏ chức năng gọi sẽ là:

remove_submenu_page('edit.php?post_type=my_events', 'edit-tags.php?taxonomy=post_tag&post_type=my_events'); 

Lưu ý rằng sên menu con được html mã hóa nên dấu và tại là & - điều này có lẽ là điều mà đã làm cho nó khó khăn cho mọi người làm việc ra khỏi nguyên tắc đầu tiên tên slug nên là gì.

+0

+1, nó hoạt động. @ IllesPeter, đây phải là câu trả lời được chấp nhận. – Sparky

+0

+1 đã xác nhận rằng nó hoạt động. Như được báo cáo ở nơi khác, chức năng này rất nhạy cảm để nhận được cả hai đối số tại chỗ. Đó là giá trị bền bỉ với các tinh chỉnh khác nhau để làm cho nó đúng. –

+0

+1 SUPER HELPFUL! Cảm ơn @ benz001 Phải là câu trả lời đúng. – user2655393

0

Có thể tốt hơn nếu chỉ sử dụng 'show_ui' => false.

function car_brand_init() { 
    // new taxonomy named merk 
    register_taxonomy(
     'merk', 
     'lease_fop', 
     array(
      'label' => __('Merken'), 
      'rewrite' => array('slug' => 'merken'), 
      'update_count_callback' => '_update_post_term_count', 
      // use this to hide from menu 
      'show_ui' => false, 
      'capabilities' => array(
       'assign_terms' => 'edit_guides', 
       'edit_terms' => 'publish_guides' 
      ) 
     ) 
    ); 
} 
add_action('init', 'car_brand_init'); 
+0

Nhưng điều này cũng vô hiệu hóa hộp meta. Nếu bạn muốn chỉ ẩn phân loại khỏi menu, giải pháp @ benz001 là tốt nhất. –

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