Disabilitare il permalink su un tipo di post personalizzato

15 mar 2013, 16:46:31
Visualizzazioni: 24.1K
Voti: 6

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?

2
Commenti

Vuoi nascondere il permalink sotto il titolo del post nella pagina Modifica Post? Ho capito bene?

Max Yudin Max Yudin
15 mar 2013 17:02:31

sì, posso nasconderlo con il css, ma vorrei disabilitarlo così non devo usare il css. Se potessi disabilitare la chiamata ajax sarebbe la soluzione migliore

meWantToLearn meWantToLearn
15 mar 2013 17:12:16
Tutte le risposte alla domanda 3
2

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

6 apr 2017 08:03:26
Commenti

In generale, hai totalmente ragione, ma la risposta è data in base al commento di modifica dell'OP.

Max Yudin Max Yudin
7 apr 2017 15:36:51

questa risposta risponde perfettamente alla domanda. creare una funzione aggiuntiva solo per nascondere un div del permalink è la definizione assoluta di follia

Zach Smith Zach Smith
5 set 2017 19:45:14
4
<?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;
}
15 mar 2013 17:26:07
Commenti

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

Jacob Raccuia Jacob Raccuia
22 nov 2014 00:59:23

Sì, questo non funziona.

Brett Brett
15 gen 2016 04:13:32

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

Max Yudin Max Yudin
18 gen 2016 17:35:25

Questa risposta sembra solo nascondere il permalink dalla visualizzazione, ma non lo disabilita completamente

User User
6 apr 2017 07:56:35
0

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.

14 set 2020 17:34:17