Template specifico per una Custom Post Type
-
Salve a tutti.
Per la seconda volta nella mia vita, mi sto dilettando nello sviluppo di un sito web (sono una Graphic Designer). Sto usando WordPress + Elementor Free.
Avrei bisogno di 2 tipologie di articoli diversi ossia Notizie (userò il template di base dell’articolo) e “Predica” (creata con ACF -> Custom Post Type). In quest’ultimo caso, il design della pagina (da assemblare con Elementor) deve essere uguale per tutte le prediche.La scrittura di questa tipologia di articoli sarà gestita da persone che non hanno molta dimestichezza con questa tipologia di strumenti. Vorrei pertanto lasciare la scrittura e l’inserimento dei vari campi personalizzati quanto più semplice possibile, possibilmente attraverso l’interfaccia di scrittura dei contenuti propria di WordPress.
Quello che mi domando è questo: è possibile creare un template specifico per “predica” che venga caricato e applicato automaticamente all’articolo al momento della sua creazione-scrittura?
So che se avessi Elementor Pro, avrei potuto usare Display Conditions.
Che ho fatto
Ho fatto diverse ricerche online, anche chiedendo l’aiuto a ChatGpt, tuttavia a parere mio l’aiuto di un essere umano è insostituibile.
1) Ho creato sia un template attraverso WordPress che attraverso Royal Element Addons (mi sono resa conto successivamente che mettere la condizione per il CPT è a pagamento).2) ChatGpt mi ha guidato come di seguito:
- Siccome sto usando un tema child, mi ha fatto creare un file php nella cartella del tema child chiamato “single-predica.php” contenente le seguenti righe di codice:
<?php /* Template personalizzato per il Custom Post Type "Predica" */
get_header(); // ID del template Elementor (sostituisci con il tuo ID)
$template_id = 1672; // Se Elementor è attivo, carica il template personalizzato
if ( function_exists('elementor_theme_do_location') && elementor_theme_do_location('single') ) { // Elementor gestisce il template }
elseif ( function_exists('elementor') ) { echo do_shortcode('[elementor-template id="' . $template_id . '"]'); } else { // Se Elementor non è attivo, mostra il contenuto classico if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <article> <h1><?php the_title(); ?></h1> <div class="content"> <?php the_content(); ?> </div> </article> <?php endwhile; endif; } get_footer(); ?
- Nel file “functions.php” mi ha fatto aggiungere questo codice:
function override_predica_template($template) { if ( is_singular('predica') ) { return get_stylesheet_directory() . '/single-predica.php'; } return $template; } add_filter('single_template', 'override_predica_template');
La mia alternativa, macchinosa e non automatica, è caricare per ogni predica il template attraverso Elementor.
Mi appello dunque alla vostra esperienza. C’è un modo per farlo?
Spero di essere stata per tutto chiara.
Se ho detto delle fesserie, non biasimatemi.La pagina su cui ho bisogno di aiuto: [devi essere connesso per vedere il link]
- Devi essere collegato per rispondere a questo topic.