Creare un modello di pagina del blog personalizzato nel modo giusto
-
-
Immagino cheilproblema originale sia stato risolto datempo,ma volevo solo dire che leggereil codice sorgente deipluginmi hainsegnatomolto.Se riesci atrovare unplug-innella directory WP.org,puoifare clic sulla scheda sviluppatoriper visualizzareil codice direttamente dalbrowsere vedere comefunziona.I guess the original issue is long since resolved now but I just wanted to say that reading through the source code of plugins has taught me a lot. If you can find a plugin on the WP.org directory you can click the developers tab to view the code straight from the browser, and see how does it.
- 0
- 2020-02-12
- rtpHarry
-
3 risposta
- voti
-
- 2018-07-17
Non dimenticare che Wordpress è statoprogettatoprincipalmenteperessere un CMSperi blog,quindi quando sitratta di sviluppo ditemi,gli sviluppatori spesso optanoper un approccionon standardin cambio delpotenzialeperpiùfunzionalità.
Gli sviluppatori ditemi hannotre opzioni quando si avvicinano a questo,una delle quali (n. 2 sotto) che haimenzionato.
-
Modifica direttamente
index.php
permodificare l'indice delblog. Questanon è unabuona opzioneperchéindex.php
dovrebbeessereilfallbacknel casoin cuimanchi un'altraparte deltuomodello.- Pro:facilee veloce
- Contro: soggetto aerrorie contrario aiprincipi orientati agli oggetti
-
Crea unmodello dipaginaper l'indice delblog. Come hai detto,molti sviluppatori ditemi scelgono di seguire questa stradaperché è unmodo veloceper dartiil controllo sull'indice delbloge in realtàti dà lapossibilità digiocare con diversimodelli diindice delblog (che è utile quando si sviluppa untema versatile ).
- Pro: versatile,consente di creare untema robusto
- Contro:perdi la capacità di chiamare lafunzionalitànativa di Wordpress che riguarda l'indice delblog.
-
Crea un
front-page.php
,home.php
eindex.php
neltuotema. Lafront-page
sarà la homepage deltema.home
verràimpostato comepredefinito sull'indice deltuoblogeindex
saràiltuofallbackpertuttii modelli.- Pro:puliscee fapieno uso degli oggettie deimetodinativi di Wordpress
- Contro: limitato da Wordpress:non è l'idealepermolti deitipi ditemi ricchi di opzioni che vedi oggi
Personalmentemi piace andare conilnumero 2,perché lamaggiorparte deimiei progetti di sviluppo di Wordpressin questigiorninon sono soloblog: sonointeri siti con un'architettura diinformazioniprofondee un'interattività complessa.
Don't forget that Wordpress was primarily designed to be a blogging CMS, so when it comes to theme development, developers often opt for a non-standard approach in exchange for the potential for more features.
Theme developers have three options when they approach this, one of which (#2 below) you mentioned.
Directly edit the
index.php
to modify the blog index. This is not a good option becauseindex.php
should be the a fallback in case another part of your template is missing.- Pros: fast and easy
- Cons: error prone and against object oriented principles
Create a page template for the blog index. Like you said, many theme developers elect to go this route because it's a fast way to give you control over the blog index, and it actually gives you the ability to play around with different blog index templates (which is useful when developing a versatile theme).
- Pros: Versatile, allows for building a robust theme
- Cons: you lose the ability to call Wordpress' native functionality that pertains to the blog index.
Create a
front-page.php
,home.php
andindex.php
in your theme. Thefront-page
will be the home page for the theme.home
will default to your blog index andindex
will be your fallback for all templates.- Pros: Clean and makes full use of Wordpress' native objects and methods
- Cons: Limited by Wordpress: not ideal for many of the kinds of option-rich themes you see today
Personally I like to go with #2, because most of my Wordpress development projects these days are not just blogs: they're entire sites with deep information architecture and complex interactivity.
-
Documentazioneper questafunzionalità: https://developer.wordpress.org/themes/basics/template-hierarchy/#home-page-displayDocumentation for this functionality: https://developer.wordpress.org/themes/basics/template-hierarchy/#home-page-display
- 0
- 2020-01-10
- Pixelsmith
-
- 2017-01-04
Vado a coprire diversebasinellamia risposta. :)
Se stai creandoiltuotemae desiderimodificare lapresentazionepredefinita di alcunitipi dipagine (ades. lapagina di archivio delle categorie o una singolapagina dipost delblog),controlla diagramma dellagerarchia deimodelli di WordPress . Mostra qualifilenella directory deltema vengono utilizzatiper visualizzarei tipi dipost.
Avendo unfilephpneltuotema che corrisponde a unfilein quellagerarchia,verrà automaticamente utilizzato da WordPress,come
single.php
per visualizzare un singolopost. Se haigià untema con quelfile,ovviamentepuoi cambiareilfilee si rifletterà sul sito.Separatamente,se si desidera averemodelli dipaginapersonalizzatima si desidera solo che un amministratore siain grado dimodificarli (subasepostperpost),ènecessarioeseguire alcuni controlli sui ruolie sulle capacità; questa risposta di StackExchange potrebbeessere utile . (Dovresti comunque creare queimodelli dipaginapersonalizzati,vedi questo Articolo di Smashing Magazine ).
In caso contrario,se desideri che un amministratore scelgamodelli dipagina/postin modopiùglobalein base a determinati criteri o scelgamodelli dipaginapersonalizzatiper l'intero sito,dovrai aggiungere un'opzione dell'area di amministrazione altuotema,e unpo 'di codicepersonalizzatoneltuotemaper visualizzare lapaginagiustain base atale opzione. L'aggiunta di un'opzione all'area di amministrazionepuòessereeseguitafacilmente con uno deitantipluginmapuò ancheessereeseguitamanualmente (vedere,adesempio, questo articolo su SitePoint ).
Going to cover several bases in my answer. :)
If you are creating your own theme, and want to change the default presentation of some types of pages (e.g. the category archive page, or a single blog post page), then check out the diagram of the WordPress template hierarchy. It shows which files in your theme directory are used to display which types of post.
By having a php file in your theme that matches a file in that hierarchy, it will be automatically used by WordPress—such as
single.php
for displaying a single post. If you have a theme with that file already there, then obviously you can change the file and it will be reflected on the site.Separately, if you want to have custom page templates but only want an admin to be able to change them (on a post-by-post basis), then you need to do some checks on roles and capabilities; this StackExchange answer may be helpful. (You'd still need to create those custom page templates, see this Smashing Magazine article).
Otherwise, if you want an admin to more globally choose page/post templates based on certain criteria, or to choose custom page templates for the entire site, then you'll need to add an admin-area option to your theme, and some custom code in your theme to display the right page based on that option. Adding an option to the admin area is easily done with one of the many plugins but also can be done by hand (see, for example, this article on SitePoint).
-
Grazieper latua risposta.Sono a conoscenza di come crearemodelli dipaginaperpagine/postbasati sull'ereditàmanon riesco atrovare unmodoperfornire opzioni dimodelloper "Paginaindicepostblog" che utilizza home.php (utilizzando la stessaterminologia del diagrammahaifornito).Vieneimpostato quando un utente amministratore sceglie unapaginaper visualizzarei postin Dashboard> Impostazioni> Lettura.Questo quindi assegna lapagina home.php/index.php.Non riesco atrovare unmodoper creare unmodello alternativo senza NON assegnare lapaginain Dashboard> Impostazioni> Lettura.Thanks for your answer. I'm aware of how to make page templates for pages/posts based on the heirachy but I can't figure out a way to give template options for "Blog Posts Index Page" which is using home.php (using same terminology as diagram you provided). This is set when an admin user chooses a page to display posts in Dashboard > Settings > Reading. That then assigns the page home.php/index.php. I cannot figure out a way to make an alternate template without NOT assigning the page in Dashboard > Settings > Reading.
- 1
- 2017-01-04
- Ryan Coolwebs
-
@RyanCoolwebs Probabilmente avrestibisogno di aggiungere un'opzione di amministrazione altuotema chepermetta una sceltatragli stili di visualizzazioneper lapagina diindice deipost delblog,e quindimodificare home.phpper leggereil valore dell'opzionee visualizzare la variazione dipagina appropriata.@RyanCoolwebs You would probably need to add an admin option to your theme that allows a choice between display styles for the blog posts index page, and then edit home.php to read the value of the option and display the appropriate page variation.
- 0
- 2017-01-04
- iguanarama
-
Sì,penso che l'utilizzo dellafunzione dipersonalizzazione siaprobabilmenteilmodomiglioreperfarloeffettivamente.Posso controllare le opzioni dipersonalizzazionee quindi recuperare laparte delmodello appropriata.Yes, I think using the customiser feature is probably the best way of actually doing this. I can check on customiser options and then retrieve the appropriate template part.
- 0
- 2017-01-04
- Ryan Coolwebs
-
- 2017-01-04
Ok,vuoi dire che vuoi creare latuapaginamodellopermostrarei post delblog,giusto?
Quindi vaiin questomodo crea unfilephp chiamato
blog-template.php
Dentro quelfilemetti questo codice sopra ogni cosa.
<?php /* * Template Name: Blog Post */ ?>
Quindi sottoil codice sopra dato,metti tuttoiltuo codice dallapagina
index.php/home.php
a questapagina sopra,salvailfilee ora crea unapagina dadashboard
,supponiamo cheilnome dellapagina sia"Blog"
Ora dal lato destrochose page template
che abbiamo appena creato comeBlog Post
da quel drop-down deimodelli.Pubblica lapaginae seiprontoper avere latuapaginapermostrarei tuoipost.
Fammi sapere se serve qualcos'altro.
Ok, you mean you want to create your own template page to show blog posts, right ?
Then go this way create a php file named
blog-template.php
Inside that file put this code on top of every thing.
<?php /* * Template Name: Blog Post */ ?>
Then below above given code, put all your code from
index.php/home.php
page to this above page, save the file and now create a page fromdashboard
, say as name of that page is"Blog"
Now from right sidechose page template
which we just created asBlog Post
from that drop-down of templates.Publish the page and you are good to go for having your own page to show your posts.
Let me know if any thing else needed.
-
OK,quindi hai appena riformulato la soluzione che OP ha chiaramenteindicato come sbagliata;) La creazione di unmodello dipaginae l'utilizzo comeindice delblognon è l'approcciomigliore,immagino.OK, so you've just refrased the solution that OP clearly stated as wrong ;) Creating page template and using it as blog index isn't the best approach, I guess.
- 0
- 2018-03-18
- Krzysiek Dróżdż
-
Non è davvero sbagliato diper sé,solo che OP hafraintesoilmotivoper cui lepersonetendono afarloin questomodoIt's not really wrong per se, just that OP misunderstood why people tend to do it this way
- 0
- 2018-07-17
- Orun
Desidero creare unnuovomodello dipaginapersonalizzatoper lapresentazione deipost delblog. Mi rendo conto che quando assegni a unapagina la visualizzazione deiposttramite Impostazioni> Lettura ,verrà assegnato a home.php la visualizzazione del contenuto dellapagina,ovveroi post su unapagina. Inoltre scompare l'opzioneper assegnare unmodello dipaginanella visualizzazione dimodifica dellapagina.
Almomentomostra una visualizzazione articolopredefinitaper articolo. Vogliofornire un'altra opzioneper l'amministratoreper selezionare unmodello diverso chepotrebbemodellarei blogin un layoutin muratura. Non sono sicuro di comefarlo.
Potreifarlo non assegnando lapaginaper visualizzarei blognell'area di amministrazione Impostazioni> Lettura e quindi consentendo all'utente amministratore di assegnareilmodello specifico allapagina utilizzando menu Attributipagina nellamodifica dellapaginama secondo https://make.wordpress.org/themes/2014/06/28/correct-handling-of-static-front-page-and -custom-blog-posts-index-template/, questo èilmodo SBAGLIATO .
Hoprovato a cercare soluzioni su Google,matutto quello che continuo atrovare sono consigliperi plugin da utilizzare. Qualcunopotrebbeindicarmi alcune risorse utili?