eliminar el enlace permanente de tipo de publicación personalizada

13

He registrado el tipo de publicación con lo siguiente:

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

Y quiero eliminar el enlace permanente que aparece debajo del título cuando publico nuevas vacaciones o empiezo a editar uno existente. ingrese la descripción de la imagen aquí

Quiero eliminar esto porque las vacaciones se mostrarán en un widget separado. De todos modos, no quiero que el administrador pueda verlo como publicación única. No hay una plantilla definida para tal.

SachinGutte
fuente
¿Desea que tengan una página de archivo y poder acceder a ellos con un enlace permanente?
Krzysiek Dróżdż
@ KrzysiekDróżdż no. Es por eso que quiero eliminar el enlace permanente. No hay tal página disponible. Las vacaciones se mostrarán en el widget y los detalles con ajax en modal.
SachinGutte
Por lo tanto, también debe ocuparse de deshabilitar enlaces permanentes, archivos, etc. Eche un vistazo a mi respuesta;)
Krzysiek Dróżdż

Respuestas:

41

Bueno, hay otra forma. Y mejor, supongo.

Deberías mirar los register_post_typeparámetros. Probablemente deberías configurarlos así:

'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

Si el tipo de publicación no es público, no verá esta parte del editor.

Krzysiek Dróżdż
fuente
Revisando la respuesta hecha por Krzysiek Dróżdż, ¿Se puede aplicar esto a las taxonomías personalizadas? PD: Perdón por publicar esto aquí, no tengo suficiente reputación para hacer un simple comentario
Gendrith
1

Bueno, una forma rápida sería simplemente ocultar el contenedor div usando 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>";
    }
}
SEÑOR
fuente
esa es seguramente una forma de hacer esto. Pero me preguntaba por el filtro de administrador o algo así. Pero esto funciona y gracias.
SachinGutte
1

También puede ocultar esta área colocando un pequeño código JavaScript para admin_footerenganchar.

<?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>';
  }
});
Eh Jewel
fuente