删除自定义帖子类型的永久链接


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

我想删除发布新假期或开始编辑现有假期时出现在标题下方的永久链接。 在此处输入图片说明

我要删除此内容,因为假期将显示在单独的小部件中。我不希望管理员无论如何都能将其视为单个帖子。没有为此定义的模板。


您是否希望他们拥有存档页面并能够通过永久链接访问它们?
KrzysiekDróżdż

@KrzysiekDróżdż不。这就是为什么我要删除永久链接。没有可用的页面。假期将显示在窗口小部件本身中,详细信息将以模式显示ajax。
2013年

因此,您还应注意禁用永久链接,存档等。看一下我的回答;)
KrzysiekDróżdż

Answers:


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

如果帖子类型不是公开的,那么您将不会看到编辑器的这一部分。


寻找KrzysiekDróżdż的答案,这可以应用于自定义分类法吗?PD:很抱歉在这里发布此内容,我没有足够的声誉发表简单的评论
Gendrith

1

好吧,一种快速的方法是只使用CSS隐藏容器div。

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>';
  }
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.