Rimuovere il permalink del tipo di post personalizzato

1 ago 2013, 21:16:30
Visualizzazioni: 49.8K
Voti: 18

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. Screenshot dell'interfaccia di modifica del post personalizzato che mostra il permalink sotto il titolo

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.

3
Commenti

Vuoi che abbiano una pagina archivio e che sia possibile accedervi con un permalink?

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

@KrzysiekDróżdż no. ecco perché voglio rimuovere il permalink. Non esiste una pagina del genere. Le festività saranno mostrate nel widget stesso e i dettagli con ajax in una modale.

SachinGutte SachinGutte
1 ago 2013 21:50:05

Quindi dovresti anche occuparti di disabilitare i permalink, gli archivi e così via. Dai un'occhiata alla mia risposta ;)

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2013 22:09:08
Tutte le risposte alla domanda 4
2
57

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.

1 ago 2013 22:05:13
Commenti

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

Gendrith Gendrith
9 dic 2019 20:08:53

Questo codice non funziona per me con WP v6.1.1

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

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>';
  }
});
24 lug 2018 14:07:14
1

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>";
    }
}
1 ago 2013 21:38:23
Commenti

è sicuramente un modo per farlo. Ma mi chiedevo se ci fosse un filtro per l'amministratore o qualcosa del genere. Ma questo funziona e grazie.

SachinGutte SachinGutte
1 ago 2013 21:43:37
0

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>';
}
8 dic 2021 08:52:46