ลบลิงก์ถาวรประเภทโพสต์ที่กำหนดเอง


13

ฉันลงทะเบียนประเภทโพสต์ด้วยการติดตาม -

$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);

และฉันต้องการลบความคิดเห็นที่ปรากฏด้านล่างชื่อเมื่อฉันโพสต์วันหยุดใหม่หรือเริ่มแก้ไขที่มีอยู่ ป้อนคำอธิบายรูปภาพที่นี่

ฉันต้องการลบสิ่งนี้เพราะวันหยุดจะแสดงเป็นวิดเจ็ตแยกกัน ฉันไม่ต้องการให้ผู้ดูแลระบบเห็นเป็นโพสต์เดียว แต่อย่างใด ไม่มีเทมเพลตที่กำหนดไว้สำหรับสิ่งนั้น


คุณต้องการให้พวกเขามีหน้าเก็บถาวรและสามารถเข้าถึงได้ด้วยลิงก์ถาวรหรือไม่
Krzysiek Dróżdż

@ KrzysiekDróżdż no. นั่นเป็นเหตุผลที่ฉันต้องการลบลิงก์ถาวร ไม่มีหน้าดังกล่าว วันหยุดจะแสดงในวิดเจ็ตตัวเองและรายละเอียดด้วย ajax ใน modal
SachinGutte

ดังนั้นคุณควรดูแลการปิดการใช้งาน permalink, คลังเก็บและอื่น ๆ ลองดูคำตอบของฉัน;)
Krzysiek Dróżdż

คำตอบ:


41

มีวิธีอื่นอีก และดีกว่าฉันเดา

คุณควรดูregister_post_typeพารามิเตอร์ คุณควรตั้งให้เป็นเช่นนี้:

'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

หากประเภทโพสต์ไม่เป็นสาธารณะคุณจะไม่เห็นส่วนหนึ่งของเครื่องมือแก้ไขนี้


ติดตามคำตอบของ Krzysiek Dróżdżสิ่งนี้จะถูกนำไปใช้กับ taxonomies ที่กำหนดเองได้หรือไม่? PD: ขออภัยที่โพสต์ที่นี่ฉันไม่มีชื่อเสียงเพียงพอที่จะแสดงความคิดเห็นอย่างง่าย
Gendrith

1

วิธีที่รวดเร็ววิธีหนึ่งก็คือเพียงซ่อนคอนเทนเนอร์ div โดยใช้ 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>";
    }
}

นั่นเป็นวิธีหนึ่งในการทำสิ่งนี้ แต่ฉันสงสัยว่าตัวกรองของผู้ดูแลระบบหรืออะไร แต่มันใช้งานได้ดีและขอบคุณ
SachinGutte

1

คุณยังสามารถซ่อนพื้นที่นี้โดยวางรหัส JavaScript ขนาดเล็กเพื่อadmin_footerขอ

<?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>';
  }
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.