Benutzerdefinierten Post-Typ-Permalink entfernen

13

Ich habe den Post-Typ mit folgenden Angaben registriert:

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

Und ich möchte den Permalink entfernen, der unter dem Titel angezeigt wird, wenn ich einen neuen Feiertag poste oder einen vorhandenen bearbeite. Bildbeschreibung hier eingeben

Ich möchte dies entfernen, da Feiertage in einem separaten Widget angezeigt werden. Ich möchte nicht, dass der Administrator es sowieso als einzelnen Beitrag sieht. Hierfür ist keine Vorlage definiert.

SachinGutte
quelle
Möchten Sie, dass sie eine Archivseite haben und mit Permalink darauf zugreifen können?
Krzysiek Dróżdż
@ KrzysiekDróżdż nein. Deshalb möchte ich Permalink entfernen. Es gibt keine solche Seite zur Verfügung. Feiertage werden im Widget selbst und Details mit Ajax in Modal angezeigt.
SachinGutte
Daher sollten Sie auch Permalinks, Archive usw. deaktivieren. Schau dir meine Antwort an;)
Krzysiek Dróżdż

Antworten:

41

Nun, es gibt noch einen anderen Weg. Und besser, denke ich.

Sie sollten register_post_typeParameter betrachten. Sie sollten sie wahrscheinlich so einstellen:

'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

Wenn der Beitragstyp nicht öffentlich ist, wird dieser Teil des Editors nicht angezeigt.

Krzysiek Dróżdż
quelle
Wird die Antwort von Krzysiek Dróżdż auf benutzerdefinierte Taxonomien angewendet werden können? PD: Es tut mir leid, dass ich das hier
gepostet habe.
1

Ein schneller Weg wäre, einfach die Container-Div mit CSS zu verstecken.

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>";
    }
}
HERR
quelle
Das ist sicherlich eine Möglichkeit, dies zu tun. Aber ich habe mich nach Admin-Filter oder so gefragt. Aber das funktioniert und danke.
SachinGutte
1

Sie können diesen Bereich auch ausblenden, indem Sie einen kleinen JavaScript-Code zum Einhängen einfügen 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>';
  }
});
Eh Juwel
quelle