supprimer le permalien de type de publication personnalisé

13

J'ai enregistré le type de message avec ce qui suit -

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

Et je veux supprimer le permalien qui apparaît sous le titre lorsque je poste de nouvelles vacances ou commence à en modifier une existante. entrez la description de l'image ici

Je souhaite supprimer cela, car les vacances seront affichées dans un widget séparé. Je ne veux pas que l'administrateur puisse le voir comme un seul message de toute façon. Aucun modèle n'est défini pour cela.

SachinGutte
la source
Voulez-vous qu'ils aient une page d'archive et pouvoir y accéder avec un permalien?
Krzysiek Dróżdż
@ KrzysiekDróżdż no. c'est pourquoi je veux supprimer le permalien. Il n'y a pas une telle page disponible. Les jours fériés seront affichés dans le widget lui-même et les détails avec ajax en modal.
SachinGutte
Vous devez donc également prendre soin de désactiver les permaliens, les archives, etc. Jetez un œil à ma réponse;)
Krzysiek Dróżdż

Réponses:

41

Eh bien, il y a une autre façon. Et mieux, je suppose.

Vous devriez regarder les register_post_typeparamètres. Vous devriez probablement les définir comme ceci:

'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 le type de publication n'est pas public, vous ne verrez pas cette partie de l'éditeur.

Krzysiek Dróżdż
la source
Cheching la réponse faite par Krzysiek Dróżdż, cela peut-il être appliqué aux taxonomies personnalisées? PD: Désolé d'avoir posté ceci ici, je n'ai pas assez de réputation pour faire un simple commentaire
Gendrith
1

Eh bien, un moyen rapide serait de simplement masquer la div du conteneur à l'aide de 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>";
    }
}
MONSIEUR
la source
c'est sûrement une façon de le faire. Mais je me demandais pour le filtre administrateur ou quelque chose. Mais cela fonctionne et merci.
SachinGutte
1

Vous pouvez également masquer cette zone en plaçant un petit code JavaScript à admin_footeraccrocher.

<?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 bijou
la source