Удаление постоянной ссылки произвольного типа записи

1 авг. 2013 г., 21:16:30
Просмотры: 49.8K
Голосов: 18

Я зарегистрировал тип записи следующим образом --

$holidayLabels = array(
    'name' => __( 'Праздники'),
    'singular_name' => __( 'Праздники'),
    'all_items' => __( 'Все Праздники'),
    'add_new' => __( 'Добавить Новый Праздник'),
    'add_new_item' => __( 'Добавить Новый Праздник'),
    'edit_item' => __( 'Редактировать Праздник'),
    'new_item' => __( 'Новый Праздник'),
    'view_item' => __( 'Просмотр Праздников'),
    'not_found' => __( 'Праздники не найдены'),
    'not_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);

И я хочу удалить постоянную ссылку, которая появляется под заголовком, когда я создаю новый праздник или начинаю редактировать существующий. Пример постоянной ссылки в админ-панели WordPress

Я хочу удалить это, потому что праздники будут отображаться в отдельном виджете. Я не хочу, чтобы администратор мог видеть их как отдельные записи. Для этого не определен никакой шаблон.

3
Комментарии

Вы хотите, чтобы у них была архивная страница и возможность доступа к ним через постоянную ссылку?

Krzysiek Dróżdż Krzysiek Dróżdż
1 авг. 2013 г. 21:46:33

@KrzysiekDróżdż нет. именно поэтому я хочу убрать постоянную ссылку. Такой страницы не существует. Праздники будут отображаться в самом виджете, а детали — через ajax в модальном окне.

SachinGutte SachinGutte
1 авг. 2013 г. 21:50:05

Значит, вам также следует позаботиться об отключении постоянных ссылок, архивов и так далее. Взгляните на мой ответ ;)

Krzysiek Dróżdż Krzysiek Dróżdż
1 авг. 2013 г. 22:09:08
Все ответы на вопрос 4
2
57

Что ж, есть и другой способ. И, пожалуй, лучший.

Вам стоит взглянуть на параметры register_post_type. Вероятно, вам нужно установить их следующим образом:

'public' => false,  // тип записи не публичный, у него не должно быть собственного ЧПУ и т.д.
'publicly_queryable' => true,  // должна быть возможность делать запросы к этому типу
'show_ui' => true,  // должна быть возможность редактировать его в wp-admin
'exclude_from_search' => true,  // следует исключить из результатов поиска
'show_in_nav_menus' => false,  // не должен отображаться в меню
'has_archive' => false,  // у него не должно быть страницы архива
'rewrite' => false,  // не должен иметь правил перезаписи URL

Если тип записи не публичный, то вы не увидите эту часть редактора.

1 авг. 2013 г. 22:05:13
Комментарии

Проверяя ответ от Krzysiek Dróżdż, можно ли это применить к пользовательским таксономиям? P.S.: Извините за публикацию здесь, у меня недостаточно репутации, чтобы оставить простой комментарий

Gendrith Gendrith
9 дек. 2019 г. 20:08:53

Этот код не работает у меня на WP версии 6.1.1

wp-mario.ru wp-mario.ru
15 мар. 2023 г. 16:46:33
0

Вы также можете скрыть эту область, разместив небольшой 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>';
  }
});
24 июл. 2018 г. 14:07:14
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>";
    }
}
1 авг. 2013 г. 21:38:23
Комментарии

это, конечно, один из способов сделать это. Но я думал о фильтре для админки или что-то в этом роде. Но это работает, и спасибо.

SachinGutte SachinGutte
1 авг. 2013 г. 21:43:37
0

Я рассматриваю этот фильтр, чтобы добиться похожего результата:

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

Возвращает HTML редактора постоянной ссылки (slug) для примера.

Он выглядит эффективным. Насколько я могу судить, доступен начиная с 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>Пользовательский HTML для замены редактора постоянной ссылки.</p>';
}
8 дек. 2021 г. 08:52:46