Creare un template personalizzato per la pagina blog nel modo corretto

4 gen 2017, 05:04:23
Visualizzazioni: 95.1K
Voti: 17

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?

1
Commenti

Immagino che il problema originale sia stato risolto da tempo, ma volevo solo dire che leggere il codice sorgente dei plugin mi ha insegnato molto. Se trovi un plugin nella directory di WP.org, puoi fare clic sulla scheda degli sviluppatori per visualizzare il codice direttamente dal browser e vedere come funziona.

rtpHarry rtpHarry
12 feb 2020 18:00:47
Tutte le risposte alla domanda 3
1
19

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.

  1. 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
  2. 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.
  3. Creare un front-page.php, home.php e index.php nel tuo tema. Il front-page sarà la home page del tema. home sarà di default il tuo indice del blog e index 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.

17 lug 2018 23:30:57
Commenti

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

Pixelsmith Pixelsmith
10 gen 2020 20:21:11
3

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).

4 gen 2017 05:28:52
Commenti

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.

Ryan Coolwebs Ryan Coolwebs
4 gen 2017 07:26:27

@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.

iguanarama iguanarama
4 gen 2017 09:23:30

Sì, penso che utilizzare la funzionalità del personalizzatore sia probabilmente il modo migliore per farlo. Posso controllare le opzioni del personalizzatore e poi recuperare la parte di template appropriata.

Ryan Coolwebs Ryan Coolwebs
4 gen 2017 09:44:14
2

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.

4 gen 2017 09:40:39
Commenti

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.

Krzysiek Dróżdż Krzysiek Dróżdż
18 mar 2018 19:27:16

Non è proprio sbagliato di per sé, è solo che OP ha frainteso il motivo per cui le persone tendono a farlo in questo modo

Orun Orun
17 lug 2018 23:32:18