Rimuovere il permalink del tipo di post personalizzato
Ho registrato un tipo di post con il seguente codice --
$holidayLabels = array(
'name' => __( 'Festività'),
'singular_name' => __( 'Festività'),
'all_items' => __( 'Tutte le Festività'),
'add_new' => __( 'Aggiungi Nuova Festività'),
'add_new_item' => __( 'Aggiungi Nuova Festività'),
'edit_item' => __( 'Modifica Festività'),
'new_item' => __( 'Nuova Festività'),
'view_item' => __( 'Visualizza Festività'),
'not_found' => __( 'Nessuna Festività trovata'),
'not_found_in_trash' => __( 'Nessuna Festività trovata nel Cestino'),
'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);
E voglio rimuovere il permalink che appare sotto il titolo quando pubblico una nuova festività o inizio a modificarne una esistente.
Voglio rimuovere questo perché le festività verranno visualizzate in un widget separato. Non voglio che l'amministratore possa vederlo come post singolo in alcun modo. Non è definito alcun template per questo.

Bene, c'è un altro modo. E migliore, credo.
Dovresti esaminare i parametri di register_post_type
. Probabilmente dovresti impostarli così:
'public' => false, // non è pubblico, non dovrebbe avere il suo permalink, e così via
'publicly_queryable' => true, // dovresti poterlo interrogare
'show_ui' => true, // dovresti poterlo modificare in wp-admin
'exclude_from_search' => true, // dovresti escluderlo dai risultati di ricerca
'show_in_nav_menus' => false, // non dovresti poterlo aggiungere ai menu
'has_archive' => false, // non dovrebbe avere una pagina archivio
'rewrite' => false, // non dovrebbe avere regole di riscrittura
Se il post type non è pubblico, allora non vedrai questa parte dell'editor.

Controllando la risposta fornita da Krzysiek Dróżdż, questo può essere applicato anche alle tassonomie personalizzate? PS: Scusate per aver postato qui, non ho abbastanza reputazione per fare un semplice commento

Puoi anche nascondere questa area inserendo un piccolo codice JavaScript all'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>';
}
});

Bene, un modo rapido sarebbe semplicemente nascondere il div del contenitore utilizzando 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>";
}
}

Sto esaminando questo filtro per ottenere qualcosa di simile:
https://developer.wordpress.org/reference/functions/get_sample_permalink_html/
Restituisce l'HTML dell'editor del permalink campione.
Sembra efficace. È disponibile da quanto posso vedere dalla versione 2.9.0 di WordPress in poi.
Codice di esempio:
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 personalizzato per sostituire l\'editor del permalink.</p>';
}
