Creare un template personalizzato per la pagina blog nel modo corretto
Voglio creare un nuovo template personalizzato per la presentazione degli articoli del blog. Ho capito che quando si assegna una pagina per visualizzare i post tramite Impostazioni > Lettura, WordPress assegnerà automaticamente home.php per visualizzare il contenuto di quella pagina - ovvero i post su una pagina. Inoltre l'opzione per assegnare un template di pagina nella schermata di modifica scompare.
Attualmente mostra una visualizzazione predefinita articolo per articolo. Voglio fornire un'altra opzione per permettere all'amministratore di selezionare un template diverso che possa stilizzare i blog in un layout a griglia o masonry. Non sono sicuro di come fare questo.
Potrei farlo non assegnando la pagina per visualizzare i blog nell'area amministrativa Impostazioni > Lettura e poi permettendo all'utente admin di assegnare il template specifico alla pagina usando il menu Attributi pagina nella modifica della pagina, ma secondo https://make.wordpress.org/themes/2014/06/28/correct-handling-of-static-front-page-and-custom-blog-posts-index-template/, questo è il modo SBAGLIATO.
Ho provato a cercare soluzioni su Google ma trovo solo raccomandazioni per plugin da usare. Qualcuno potrebbe indicarmi delle risorse utili?

Non dimenticare che WordPress è stato progettato principalmente come un CMS per blogging, quindi quando si tratta di sviluppo di temi, gli sviluppatori spesso optano per un approccio non standard in cambio della possibilità di avere più funzionalità.
Gli sviluppatori di temi hanno tre opzioni quando affrontano questo problema, una delle quali (#2 qui sotto) hai menzionato.
Modificare direttamente il file
index.php
per modificare l'indice del blog. Questa non è una buona opzione perchéindex.php
dovrebbe essere un fallback nel caso in cui manchi un'altra parte del tuo template.- Vantaggi: veloce e semplice
- Svantaggi: soggetto a errori e contrario ai principi della programmazione orientata agli oggetti
Creare un page template per l'indice del blog. Come hai detto, molti sviluppatori di temi scelgono questa strada perché è un modo veloce per darti il controllo sull'indice del blog e ti dà effettivamente la possibilità di sperimentare con diversi template per l'indice del blog (utile quando sviluppi un tema versatile).
- Vantaggi: versatile, permette di costruire un tema robusto
- Svantaggi: perdi la possibilità di chiamare le funzionalità native di WordPress relative all'indice del blog.
Creare un
front-page.php
,home.php
eindex.php
nel tuo tema. Ilfront-page
sarà la home page del tema.home
sarà di default il tuo indice del blog eindex
sarà il tuo fallback per tutti i template.- Vantaggi: pulito e sfrutta appieno gli oggetti e i metodi nativi di WordPress
- Svantaggi: limitato da WordPress: non ideale per molti dei tipi di temi ricchi di opzioni che vedi oggi
Personalmente preferisco la seconda opzione, perché la maggior parte dei miei progetti di sviluppo WordPress oggi non sono solo blog: sono interi siti con un'architettura dell'informazione profonda e un'interattività complessa.

Documentazione per questa funzionalità: https://developer.wordpress.org/themes/basics/template-hierarchy/#home-page-display

Affronterò diversi aspetti nella mia risposta. :)
Se stai creando il tuo tema personalizzato e vuoi modificare la presentazione predefinita di alcuni tipi di pagine (ad esempio la pagina di archivio delle categorie o la pagina di un singolo articolo del blog), dai un'occhiata al diagramma della gerarchia dei template di WordPress. Mostra quali file nella directory del tuo tema vengono utilizzati per visualizzare quali tipi di contenuto.
Avere un file php nel tuo tema che corrisponde a un file in quella gerarchia farà sì che venga utilizzato automaticamente da WordPress, come ad esempio single.php
per visualizzare un singolo articolo. Se hai un tema con quel file già presente, ovviamente puoi modificarlo e i cambiamenti si rifletteranno sul sito.
Inoltre, se vuoi avere template di pagina personalizzati ma vuoi che solo un amministratore possa modificarli (su base articolo per articolo), allora devi fare alcuni controlli sui ruoli e le capacità; questa risposta su StackExchange potrebbe essere utile. (Dovresti comunque creare quei template di pagina personalizzati, vedi questo articolo di Smashing Magazine).
Altrimenti, se vuoi che un amministratore possa scegliere più globalmente i template di pagina/articolo in base a determinati criteri, o selezionare template di pagina personalizzati per l'intero sito, allora dovrai aggiungere un'opzione nell'area di amministrazione al tuo tema e del codice personalizzato nel tuo tema per visualizzare la pagina corretta in base a quell'opzione. Aggiungere un'opzione nell'area di amministrazione può essere fatto facilmente con uno dei tanti plugin ma può anche essere fatto manualmente (vedi, ad esempio, questo articolo su SitePoint).

Grazie per la tua risposta. Sono consapevole di come creare modelli di pagina per pagine/articoli basati sulla gerarchia, ma non riesco a trovare un modo per offrire opzioni di template per la "Pagina Indice degli Articoli del Blog" che utilizza home.php (usando la stessa terminologia del diagramma che hai fornito). Questo viene impostato quando un utente amministratore sceglie una pagina per visualizzare gli articoli in Dashboard > Impostazioni > Lettura. Questo assegna poi la pagina home.php/index.php. Non riesco a trovare un modo per creare un template alternativo senza NON assegnare la pagina in Dashboard > Impostazioni > Lettura.

@RyanCoolwebs Probabilmente dovresti aggiungere un'opzione amministrativa al tuo tema che permetta di scegliere tra stili di visualizzazione per la pagina indice degli articoli del blog, e poi modificare home.php per leggere il valore dell'opzione e visualizzare la variante di pagina appropriata.

Ok, intendi che vuoi creare la tua pagina template personalizzata per mostrare gli articoli del blog, giusto?
Allora procedi così: crea un file php chiamato blog-template.php
All'interno di quel file inserisci questo codice all'inizio, prima di tutto il resto.
<?php
/*
* Template Name: Blog Post
*/
?>
Poi, sotto il codice appena fornito, copia tutto il codice dalla tua pagina index.php
o home.php
in questa nuova pagina, salva il file e ora crea una pagina dalla bacheca
, dai come nome a quella pagina "Blog"
. Ora dal lato destro scegli il template di pagina
che abbiamo appena creato come Blog Post
dal menu a discesa dei template.
Pubblica la pagina e sei pronto per avere la tua pagina personalizzata per mostrare i tuoi articoli.
Fammi sapere se hai bisogno di altro.

OK, quindi hai solo riformulato la soluzione che OP ha chiaramente indicato come sbagliata ;) Creare un template di pagina e usarlo come indice del blog non è l'approccio migliore, credo.
