Dezactivarea permalink-urilor pentru tipuri de postări personalizate
Am creat un tip de postare personalizat, dar nu vreau să aibă permalink. În mod implicit, după introducerea titlului postării, se creează un permalink. Nu am nevoie ca acestea să fie generate.
Din documentația studiată, se spune că tipurile de postări personalizate vor avea întotdeauna un permalink și nu există o modalitate de a le dezactiva. Există totuși vreo modalitate prin care pot preveni apelul ajax care generează permalink-ul?

În timp ce răspunsul acceptat pare doar să ascundă legătura permanentă (permalink) fără a o elimina complet (aceasta fiind în continuare generată și accesibilă), puteți dezactiva afișarea și accesul la legătura permanentă prin setarea anumitor parametri în register_post_types
.
Am obținut ceea ce aveam nevoie prin setarea următoarelor, dar în funcție de cazul dumneavoastră specific, este posibil să doriți să ajustați unii dintre ceilalți parametri.
'public' => false,
'show_ui' => true
Mai multe detalii: https://wordpress.stackexchange.com/a/108658/33056

În general, ai perfectă dreptate, dar răspunsul este dat conform comentariului de modificare al OP.

<?php
add_filter('get_sample_permalink_html', 'my_hide_permalinks');
function my_hide_permalinks($in){
global $post;
if($post->post_type == 'my_post_type')
$out = preg_replace('~<div id="edit-slug-box".*</div>~Ui', '', $in);
return $out;
}
Acest lucru va elimina:
- Permalink-ul în sine
- Butonul "Vezi Postarea"
- Butonul "Obține Link Scurt"
Dacă doriți să eliminați doar permalink-ul, înlocuiți linia care conține preg_replace
cu:
$out = preg_replace('~<span id="sample-permalink".*</span>~Ui', '', $in);
ACTUALIZARE:
get_sample_permalink_html
s-a schimbat în versiunea 4.4.
Iată codul actualizat și testat:
add_filter('get_sample_permalink_html', 'my_hide_permalinks', 10, 5);
function my_hide_permalinks($return, $post_id, $new_title, $new_slug, $post)
{
if($post->post_type == 'my_post_type') {
return '';
}
return $return;
}

nu a funcționat pentru mine - dar am făcut să returneze ''
și atunci a funcționat. Nu știu care sunt implicațiile acestui lucru însă.

Ciudat, funcționa pentru mine înainte. Oricum, trebuie modificat pentru a respecta cerințele WP 4.4. Am actualizat codul.

După cum sugerează documentația WordPress, pur și simplu dezactivează argumentul public
al tipului de post înregistrat.
Acest lucru va avea ca efect dezactivarea următoarelor argumente, doar dacă nu sunt specificate altfel:
- exclude_from_search
- publicly_queryable
- show_in_nav_menus
- show_ui
Astfel, nu vei mai avea posibilitatea să accesezi pagina singulară, iar permalink-ul nu va mai fi afișat în administrare, iar butoanele "vizualizare" vor fi ascunse.
PS: Răspunsul selectat arată ceea ce nu ar trebui făcut atunci când vine vorba de dezvoltarea WordPress, într-un mod prost. Nu este nevoie să alterezi randarea unui HTML și/sau să scrii cod, deoarece există o API WordPress integrată pentru Tipuri de Post pentru asta. Așadar, te rog să iei în considerare răspunsul meu, deoarece îndeplinește toate cerințele întrebării și este simplu și direct la obiect, cu o soluție integrată.
