eliminar el enlace permanente del tipo de entrada personalizada

1 ago 2013, 21:16:30
Vistas: 49.8K
Votos: 18

He registrado un tipo de entrada con lo siguiente --

$holidayLabels = array(
    'name' => __( 'Festivos'),
    'singular_name' => __( 'Festivos'),
    'all_items' => __( 'Todos los Festivos'),
    'add_new' => __( 'Añadir Nuevo Festivo'),
    'add_new_item' => __( 'Añadir Nuevo Festivo'),
    'edit_item' => __( 'Editar Festivo'),
    'new_item' => __( 'Nuevo Festivo'),
    'view_item' => __( 'Ver Festivos'),
    'not_found' => __( 'No se encontraron Festivos'),
    'not_found_in_trash' => __( 'No se encontraron Festivos en la Papelera'),
    '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 un nuevo festivo o empiezo a editar uno existente. captura de pantalla mostrando el enlace permanente debajo del título

Quiero eliminar esto porque los festivos se mostrarán en un widget separado. No quiero que el administrador pueda verlo como una entrada individual de ninguna manera. No hay plantilla definida para esto.

3
Comentarios

¿Quieres que tengan una página de archivo y que se pueda acceder a ellas con un enlace permanente?

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2013 21:46:33

@KrzysiekDróżdż no. Por eso quiero eliminar el enlace permanente. No hay tal página disponible. Los días festivos se mostrarán en el widget mismo y los detalles con ajax en un modal.

SachinGutte SachinGutte
1 ago 2013 21:50:05

Entonces también deberías ocuparte de deshabilitar los enlaces permanentes, archivos, etc. Echa un vistazo a mi respuesta ;)

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2013 22:09:08
Todas las respuestas a la pregunta 4
2
57

Bueno, hay otra manera. Y mejor, supongo.

Deberías revisar los parámetros de register_post_type. Probablemente deberías configurarlos así:

'public' => false,  // no es público, no debería tener su propio enlace permanente, etc.
'publicly_queryable' => true,  // deberías poder consultarlo
'show_ui' => true,  // deberías poder editarlo en wp-admin
'exclude_from_search' => true,  // deberías excluirlo de los resultados de búsqueda
'show_in_nav_menus' => false,  // no deberías poder agregarlo a los menús
'has_archive' => false,  // no debería tener página de archivo
'rewrite' => false,  // no debería tener reglas de reescritura

Si el tipo de entrada no es público, entonces no verás esta parte del editor.

1 ago 2013 22:05:13
Comentarios

Verificando la respuesta proporcionada por Krzysiek Dróżdż, ¿esto se puede aplicar a taxonomías personalizadas? PD: Perdón por publicar esto aquí, no tengo suficiente reputación para hacer un simple comentario

Gendrith Gendrith
9 dic 2019 20:08:53

Este código no funciona para mí en WP v6.1.1

wp-mario.ru wp-mario.ru
15 mar 2023 16:46:33
0

También puedes ocultar esta área colocando un pequeño código JavaScript en el hook 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 jul 2018 14:07:14
1

Bueno, una forma rápida sería simplemente ocultar el div contenedor 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>";
    }
}
1 ago 2013 21:38:23
Comentarios

seguramente esa es una forma de hacerlo. Pero me preguntaba por algún filtro de administración o algo así. Pero esto funciona y gracias.

SachinGutte SachinGutte
1 ago 2013 21:43:37
0

Estoy viendo este filtro para lograr algo similar:

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

Devuelve el HTML del editor de slug de enlace permanente de muestra.

Parece efectivo. Está disponible desde lo que puedo ver desde WordPress 2.9.0 en adelante.

Código de ejemplo:

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 personalizado para reemplazar el editor de enlace permanente.</p>';
}
8 dic 2021 08:52:46