elimină permalink-ul tipului de postare personalizat

1 aug. 2013, 21:16:30
Vizualizări: 49.8K
Voturi: 18

Am înregistrat tipul de postare cu următoarele --

$holidayLabels = array(
    'name' => __( 'Sărbători'),
    'singular_name' => __( 'Sărbători'),
    'all_items' => __( 'Toate Sărbătorile'),
    'add_new' => __( 'Adaugă Sărbătoare Nouă'),
    'add_new_item' => __( 'Adaugă Sărbătoare Nouă'),
    'edit_item' => __( 'Editează Sărbătoarea'),
    'new_item' => __( 'Sărbătoare Nouă'),
    'view_item' => __( 'Vezi Sărbătorile'),
    'not_found' => __( 'Nu s-au găsit Sărbători'),
    'not_found_in_trash' => __( 'Nu s-au găsit Sărbători în Coș'),
    '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);

Și vreau să elimin permalink-ul care apare sub titlu când postez o sărbătoare nouă sau încep să editez una existentă. Exemplu de permalink sub titlu în WordPress

Vreau să elimin acest permalink deoarece sărbătorile vor fi afișate într-un widget separat. Nu vreau ca administratorul să poată vedea postarea individual în niciun fel. Nu există niciun șablon definit pentru așa ceva.

3
Comentarii

Dorești să aibă o pagină de arhivă și să poată fi accesate prin permalink?

Krzysiek Dróżdż Krzysiek Dróżdż
1 aug. 2013 21:46:33

@KrzysiekDróżdż nu. de aceea vreau să elimin permalink-ul. Nu există o astfel de pagină disponibilă. Sărbătorile vor fi afișate în widget-ul în sine și detaliile cu ajax în modal.

SachinGutte SachinGutte
1 aug. 2013 21:50:05

Deci ar trebui să te ocupi și de dezactivarea permalink-urilor, arhivelor și așa mai departe. Aruncă o privire la răspunsul meu ;)

Krzysiek Dróżdż Krzysiek Dróżdż
1 aug. 2013 22:09:08
Toate răspunsurile la întrebare 4
2
57

Ei bine, există o altă metodă. Și mai bună, cred.

Ar trebui să te uiți la parametrii funcției register_post_type. Probabil că ar trebui să le setezi astfel:

'public' => false,  // nu este public, nu ar trebui să aibă propriul permalink și așa mai departe
'publicly_queryable' => true,  // ar trebui să poți să interoghezi acest tip de postare
'show_ui' => true,  // ar trebui să poți să-l editezi în wp-admin
'exclude_from_search' => true,  // ar trebui exclus din rezultatele căutării
'show_in_nav_menus' => false,  // nu ar trebui să poți să-l adaugi în meniuri
'has_archive' => false,  // nu ar trebui să aibă o pagină de arhivă
'rewrite' => false,  // nu ar trebui să aibă reguli de rescriere

Dacă tipul de postare nu este public, atunci nu vei vedea această parte a editorului.

1 aug. 2013 22:05:13
Comentarii

Verificând răspunsul dat de Krzysiek Dróżdż, acest lucru poate fi aplicat și taxonomiilor personalizate? PD: Îmi pare rău că postez aici, nu am suficiente puncte de reputație pentru a lăsa un simplu comentariu

Gendrith Gendrith
9 dec. 2019 20:08:53

Acest cod nu funcționează pentru mine în WP v6.1.1

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

De asemenea, puteți ascunde această zonă plasând un mic cod JavaScript în hook-ul 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 iul. 2018 14:07:14
1

Ei bine, o metodă rapidă ar fi să ascundem div-ul container folosind 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 aug. 2013 21:38:23
Comentarii

asta este cu siguranță o modalitate de a face asta. Dar mă întrebam dacă există vreun filtru pentru administrator sau ceva de genul. Dar acest lucru funcționează și îți mulțumesc.

SachinGutte SachinGutte
1 aug. 2013 21:43:37
0

Mă uit la acest filtru pentru a realiza ceva similar:

https://developer.wordpress.org/reference/functions/get_sample_permalink_html/

Returnează HTML-ul editorului de slug pentru permalink demonstrativ.

Pare a fi eficient. Este disponibil din câte văd începând cu WordPress 2.9.0.

Cod exemplu:

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 personalizat pentru a înlocui editorul de permalink.</p>';
}
8 dec. 2021 08:52:46