Stai cercando un modo per forzare il tuo custom post type a essere privato per impostazione predefinita? Sebbene probabilmente esista un plugin per questo, abbiamo creato un rapido snippet di codice che puoi utilizzare per forzare un custom post type a essere privato in WordPress.
Istruzioni:
Tutto quello che devi fare è aggiungere questo codice al file functions.php del tuo tema o in un plugin specifico per il sito:
function force_type_private($post)
{
if ($post['post_type'] == 'my_post_type')
$post['post_status'] = 'private';
return $post;
}
add_filter('wp_insert_post_data', 'force_type_private');
Non dimenticare di cambiare my_post_type con il nome del tuo custom post type. Questa è una leggera modifica rispetto al codice sorgente e non include una password poiché questo è privato e non protetto da password.
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come aggiungere correttamente snippet di codice in WordPress, in modo da non compromettere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la lettura dei nostri altri articoli sul sito come: 28 migliori temi WordPress per curriculum e come creare un modulo di candidatura in WordPress.
Salve,
Qualche idea su come fare lo stesso codice ma per 2 CPT diversi invece di uno?
Grazie in anticipo
so che questo thread è un po' vecchio ma... come si può puntare un campo personalizzato in quel custom post type per cambiarne il valore?
L'ho modificato, in modo che i link siano impostati sul nome del post invece di "my_post_type/auto-draft" quando vengono creati. In questo modo puoi anche pubblicare post protetti da password.
function force_type_private($post)
{
if ($post[‘post_type’] == ‘my_post_type’) {
if ($post[‘post_status’] == ‘publish’) $post[‘post_status’] = ‘private’;
}
return $post;
}
add_filter(‘wp_insert_post_data’, ‘force_type_private’);
Questo funziona, ma ho scoperto che rende impossibile spostare il post nel cestino... hai anche tu riscontrato questo problema?
No, non ho avuto questo problema, ma ci proverò e vedrò se riesco a replicare il problema.
Sì, ho esattamente lo stesso problema... Qualcuno ha qualche idea?
Perché non fai semplicemente: if ( post type = my post type) { post status = private; return post; }
Sembra che tu abbia una riga in più non necessaria.
È vero Adam, l'ho corretto.
questo codice è corretto?
Penso che ti sia dimenticato un "ELSE"
Ciao Jose,
No, è corretto, crea solo un nuovo tipo di post personalizzato, quindi aggiungi questo a functions.php e noterai che quando selezioni "Aggiungi nuovo" per quel tipo di post personalizzato, avrà "privato" selezionato per impostazione predefinita.
Ciao Kevin,
Ancora nessun modo per eliminare i miei post con questo codice. Qualche idea?
Saluti,
Ho usato un codice come questo, che controlla se sono nel cestino prima di renderli privati:
// Forza i post del tipo personalizzato 'internt-arkiv' a essere privati
// ... ma prima assicurati che non siano 'cestino' altrimenti è impossibile cestinare un post
function force_type_private($post)
{
if ($post[‘post_type’] == ‘my_post_type’) {
if ($post[‘post_status’] != ‘trash’) $post[‘post_status’] = ‘private’;
}
return $post;
}
add_filter(‘wp_insert_post_data’, ‘force_type_private’);
[...] Questo post è stato menzionato su Twitter da HTMLfrp, wp_freak. wp_freak ha detto: #wordpress Forza il tipo di post personalizzato a essere privato http://bit.ly/fHzJuW [...]