Disabilitare il permalink su un tipo di post personalizzato
Ho creato un tipo di post personalizzato (custom post type), ma non voglio che abbia un permalink. Per impostazione predefinita, dopo aver inserito il titolo del post, viene creato un permalink. Non ho bisogno che vengano generati.
Da quanto ho letto, si dice che i tipi di post personalizzati avranno sempre un permalink e non c'è modo di disabilitarlo. Esiste un modo per impedire la chiamata AJAX che genera il permalink?

Mentre la risposta accettata sembra solo nascondere il permalink dalla visualizzazione, ma continuando a generarlo e renderlo accessibile, puoi disabilitare completamente la visualizzazione e l'accessibilità del permalink impostando alcuni parametri di register_post_types
.
Ho ottenuto ciò che mi serviva impostando solo i seguenti parametri, ma a seconda del tuo caso specifico, potresti voler regolare alcuni degli altri parametri.
'public' => false,
'show_ui' => true
Maggiori informazioni: https://wordpress.stackexchange.com/a/108658/33056

In generale, hai totalmente ragione, ma la risposta è data in base al commento di modifica dell'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;
}
Questo codice rimuoverà:
- Il permalink stesso
- Il pulsante "Visualizza articolo"
- Il pulsante "Ottieni link breve"
Se vuoi rimuovere solo il permalink, sostituisci la linea contenente preg_replace
con:
$out = preg_replace('~<span id="sample-permalink".*</span>~Ui', '', $in);
AGGIORNAMENTO:
get_sample_permalink_html
è cambiato nella versione 4.4.
Ecco il codice aggiornato e testato:
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;
}

non ha funzionato per me - ma ho fatto restituire ''
e allora ha funzionato. Non so però quali siano le implicazioni.

È strano, per me funzionava prima. Comunque, deve essere modificato per soddisfare i requisiti di WP 4.4. Ho aggiornato il codice.

Come suggerisce la documentazione di WordPress, è sufficiente disattivare l'argomento public
del tipo di post registrato.
Ciò avrà come conseguenza la disattivazione dei seguenti argomenti, solo se non specificati diversamente:
- exclude_from_search
- publicly_queryable
- show_in_nav_menus
- show_ui
Quindi non avrai più la possibilità di accedere alla vista singola e il permalink non sarà più visualizzato nell'amministrazione, inoltre i pulsanti "visualizza" saranno nascosti.
PS: La risposta selezionata mostra ciò che non dovrebbe essere fatto quando si tratta di sviluppo WordPress, in modo scorretto. Non è necessario alterare il rendering di alcuni HTML e/o codificare qualcosa poiché esiste un'API integrata di WordPress per i Tipi di Post proprio per questo. Quindi per favore considera la mia risposta, in quanto soddisfa tutti i requisiti della domanda ed è semplice e diretta al punto con una soluzione integrata.
