loại bỏ permalink loại bài tùy chỉnh


13

Tôi đã đăng ký loại bài đăng sau đây -

$holidayLabels = array(
    'name' => __( 'Holidays'),
    'singular_name' => __( 'Holidays'),
    'all_items' => __( 'All Holidays'),
    'add_new' => __( 'Add New Holiday'),
    'add_new_item' => __( 'Add New Holiday'),
    'edit_item' => __( 'Edit Holiday'),
    'new_item' => __( 'New Holiday'),
    'view_item' => __( 'View Holidays'),
    'not_found' => __( 'No Holidays found'),
    'not_found_in_trash' => __( 'No Holidays found in Trash'),
    'parent_item_colon' => ''

);

$holidayArgs = array(
    'labels'               => $holidayLabels,
    'public'               => true,
    'publicly_queryable'   => true,
    '_builtin'             => false,
    'show_ui'              => true,
    'query_var'            => true,
    'rewrite'              => array( "slug" => "holidays" ),
    'capability_type'      => 'post',
    'hierarchical'         => false,
    //'menu_position'        => 6,
    'supports'             => array( 'title'),
    'has_archive'          => false,
    'show_in_nav_menus'    => false,

);
register_post_type('holidays', $holidayArgs);

Và tôi muốn xóa permalink xuất hiện bên dưới tiêu đề khi tôi đăng kỳ nghỉ mới hoặc bắt đầu chỉnh sửa trang hiện có. nhập mô tả hình ảnh ở đây

Tôi muốn loại bỏ điều này bởi vì, ngày lễ sẽ được hiển thị trong widget riêng biệt. Tôi không muốn quản trị viên có thể xem nó như một bài viết dù sao đi nữa. Không có mẫu nào được định nghĩa như vậy.


Bạn có muốn họ có trang lưu trữ và có thể truy cập chúng bằng permalink không?
Krzysiek Dróżdż

@ KrzysiekDróżdż không. đó là lý do tại sao tôi muốn loại bỏ permalink. Không có trang như vậy có sẵn. Ngày lễ sẽ được hiển thị trong chính widget và chi tiết với ajax theo phương thức.
SachinGutte

Vì vậy, bạn cũng nên quan tâm đến việc vô hiệu hóa permalinks, lưu trữ, v.v. Hãy xem câu trả lời của tôi;)
Krzysiek Dróżdż

Câu trả lời:


41

Vâng, có một cách khác. Và tốt hơn, tôi đoán.

Bạn nên nhìn vào register_post_typethông số. Bạn có lẽ nên đặt chúng như thế này:

'public' => false,  // it's not public, it shouldn't have it's own permalink, and so on
'publicly_queryable' => true,  // you should be able to query it
'show_ui' => true,  // you should be able to edit it in wp-admin
'exclude_from_search' => true,  // you should exclude it from search results
'show_in_nav_menus' => false,  // you shouldn't be able to add it to menus
'has_archive' => false,  // it shouldn't have archive page
'rewrite' => false,  // it shouldn't have rewrite rules

Nếu loại bài đăng không công khai, thì bạn sẽ không thấy phần này của trình chỉnh sửa.


Trả lời câu trả lời của Krzysiek Dróżdż, điều này có thể được áp dụng cho các nguyên tắc phân loại tùy chỉnh không? PD: Xin lỗi vì đã đăng bài này lên đây, tôi không có đủ danh tiếng để đưa ra một nhận xét đơn giản
Gendrith

1

Chà, một cách nhanh chóng là chỉ cần ẩn div container bằng CSS.

add_action('admin_head', 'wpds_custom_admin_post_css');
function wpds_custom_admin_post_css() {

    global $post_type;

    if ($post_type == 'post_type') {
        echo "<style>#edit-slug-box {display:none;}</style>";
    }
}

Đó chắc chắn là một cách để làm điều này. Nhưng tôi đã tự hỏi cho bộ lọc quản trị hoặc một cái gì đó. Nhưng điều này không hoạt động và cảm ơn bạn.
SachinGutte

1

Bạn cũng có thể ẩn khu vực này bằng cách đặt một mã JavaScript nhỏ để admin_footermóc.

<?php
add_action('admin_footer', function() {
  global $post_type;
  if ($post_type == 'your_custom_post_type') {
    echo '<script> document.getElementById("edit-slug-box").outerHTML = ""; </script>';
  }
});
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.