rimuovere il tipo di post personalizzato permalink


13

Ho registrato il tipo di post con il seguente -

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

E voglio rimuovere il permalink che appare sotto il titolo quando inserisco una nuova vacanza o inizio a modificarne una esistente. inserisci qui la descrizione dell'immagine

Voglio rimuovere questo perché, le vacanze verranno visualizzate in widget separati. Non voglio che l'amministratore sia in grado di vederlo come un singolo post comunque. Non esiste un modello definito per tale.


Vuoi che abbiano una pagina di archivio e siano in grado di accedervi con permalink?
Krzysiek Dróżdż

@ KrzysiekDróżdż no. ecco perché voglio rimuovere il permalink. Questa pagina non è disponibile. Le vacanze saranno mostrate nel widget stesso e nei dettagli con ajax in modale.
SachinGutte

Quindi dovresti anche occuparti di disabilitare permalink, archivi e così via. Dai un'occhiata alla mia risposta;)
Krzysiek Dróżdż

Risposte:


41

Bene, c'è un altro modo. E meglio, immagino.

Dovresti guardare i register_post_typeparametri. Probabilmente dovresti impostarli in questo modo:

'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

Se il tipo di post non è pubblico, non vedrai questa parte dell'editor.


Cheching la risposta fatta da Krzysiek Dróżdż, questo può essere applicato alle tassonomie personalizzate? PD: Mi dispiace per aver pubblicato questo qui, non ho abbastanza reputazione per fare un semplice commento
Gendrith,

1

Bene, un modo rapido sarebbe quello di nascondere il div container 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>";
    }
}

questo è sicuramente un modo per farlo. Ma mi chiedevo il filtro dell'amministratore o qualcosa del genere. Ma questo funziona e grazie.
SachinGutte

1

Puoi anche nascondere quest'area posizionando un piccolo codice JavaScript da admin_footeragganciare.

<?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>';
  }
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.