删除自定义POST类型固定链接

时间:2013-08-01 作者:SachinGutte

我已在以下网站注册了帖子类型--

$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);
当我发布新假日或开始编辑现有假日时,我想删除标题下方显示的永久链接。enter image description here

我想删除它,因为假期将显示在单独的小部件中。我不希望管理员能够看到它作为一个单一的职位无论如何。没有为此类定义模板。

4 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

嗯,还有另一种方法。我想更好。

你应该看看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
如果post类型不是public,那么您将看不到编辑器的这一部分。

SO网友:Eh Jewel

您还可以通过在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>\';
  }
});

SO网友:M-R

一种快速的方法是使用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>";
    }
}

SO网友:Mauro Colella

我正在查看此过滤器以实现类似的功能:

https://developer.wordpress.org/reference/functions/get_sample_permalink_html/

返回示例permalink slug editor的HTML。

这似乎很有效。据我所知,WordPress 2.9.0以上版本都有。

示例代码:

add_filter(\'get_sample_permalink_html\', \'my_sample_permalink_html\', 10, 5);

function my_sample_permalink_html($html, $post_id, $new_title, $new_slug, $post) {
  return \'<p>Custom HTML to replace the permalink editor.</p>\';
}

结束

相关推荐

Leverage permalinks with AJAX

我正在尝试为我的主题实现一些AJAX,但有一些事情我无法理解(或谷歌)。我有一个名为“Faculty”的自定义帖子类型和一个页面,该页面在一个链接到/Faculty/entry1、/Faculty/entry2等的网格中显示自定义帖子类型中每个条目的特征图像。我没有加载包含内容的新页面,而是尝试使用管理ajax在网格上方加载内容。php文件。但我如何利用当前的“漂亮”永久链接来实现这一点?我想要实现的是,用户单击特征图像,url将更改为/faculty/item2,我将通过AJAX接收item2的内容。如