La pagina singola del custom post type restituisce errore 404
Ho un custom post type chiamato slide
. Ha contenuto e alcuni campi personalizzati. Voglio che WP mostri il template single.php
o single-slide.php
quando l'utente clicca sul link della pagina singola dello slide. Il problema è che WP restituisce un errore 404 quando tento di visualizzare la pagina singola dello slide.
Ecco il mio codice in functions.php
:
function create_slide_post_type() {
$labels = array(
'name' => _x( 'Slides', 'i2sa' ),
'singular_name' => _x( 'Slide', 'i2sa' ),
'menu_name' => _x( 'Slides', 'i2sa' ),
'name_admin_bar' => _x( 'Slide', 'i2sa' ),
'add_new' => _x( 'Aggiungi', 'i2sa' ),
'add_new_item' => __( 'Aggiungi nuovo slide', 'i2sa' ),
'new_item' => __( 'Nuovo slide', 'i2sa' ),
'edit_item' => __( 'Modifica slide', 'i2sa' ),
'view_item' => __( 'Visualizza slide', 'i2sa' ),
'all_items' => __( 'Tutti gli slide', 'i2sa' ),
'search_items' => __( 'Cerca slide', 'i2sa' ),
'parent_item_colon' => __( 'Slide genitore:', 'i2sa' ),
'not_found' => __( 'Nessuno slide trovato.', 'i2sa' ),
'not_found_in_trash' => __( 'Nessuno slide trovato nel cestino.', 'i2sa' )
);
$args = array(
'labels' => $labels,
'description' => "Slides dell'azienda i2sa",
'public' => true,
'exclude_from_search'=> true,
'publicly_queryable' => false,
'show_in_nav_menus' => false,
'menu_icon' => 'dashicons-images-alt2',
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'slide' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
);
register_post_type( 'slide', $args );
flush_rewrite_rules();
}
add_action( 'init', 'create_slide_post_type' );

Dovresti impostare l'argomento publicly_queryable
su true
quando registri il tuo custom post type.
NOTA BENE: Aggiungi flush_rewrite_rules()
, aggiorna la pagina una o due volte e RIMUOVILO IMMEDIATAMENTE. NON devi mantenere flush_rewrite_rules()
a meno che non sia previsto come indicato nel codex.
questa è un'operazione costosa quindi dovrebbe essere usata solo quando strettamente necessario

Oh wow, ha funzionato anche qui. Non era per niente ovvio. Grazie!

Svuota le regole di riscrittura dal pannello di controllo -> Impostazioni->Pagina dei permalink. Clicca sul pulsante salva e poi controlla la pagina dei dettagli dello slide. Ora dovrebbe funzionare. In alternativa puoi scrivere questo codice flush_rewrite_rules()
nella tua funzione create_slide_post_type()
. Vedi il Codex

Fare clic sul pulsante Salva nei Permalink ha funzionato per me. Dopo aver spostato il sito su un server di produzione, tutti i link dei custom post type si interrompevano. Questo ha risolto il problema. Grazie!

Salvare i permalink funziona. Ma per favore non aggiungere flush_rewrite_rules()
dopo le chiamate a register_post_type()
nel codice di produzione (cioè all'interno di create_slide_post_type
). Usa l'hook di attivazione del plugin o un valore option per determinare che hai aggiunto un nuovo post type
