Créer un modèle de page de blog personnalisé de la bonne manière
-
-
Je suppose que leproblème d'origineest résolu depuis longtempsmaintenant,maisje voulaisjuste dire que la lecture du code source despluginsm'abeaucoup appris.Si vouspouveztrouver unplugin sur le répertoire WP.org,vouspouvez cliquer sur l'onglet développeurspour afficher le code directement àpartir dunavigateuret voir comment celafonctionne.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 réponses
- votes
-
- 2018-07-17
N'oubliezpas que Wordpress a étéprincipalement conçupour être un CMS deblog,donc quandil s'agit de développement dethèmes,les développeurs optent souventpour une approchenon standarden échange dupotentielpourplus defonctionnalités.
Les développeurs dethèmes onttrois options lorsqu'ils abordent cela,dont l'une (n ° 2 ci-dessous) que vous avezmentionnée.
-
Modifiez directement le
index.php
pourmodifier l'index dublog. Cen'estpas unebonne option carindex.php
devrait être une solution de secours au cas où une autrepartie de votremodèle seraitmanquante.- Avantages: simpleet rapide
- Inconvénients: source d'erreuret contre lesprincipes orientés objet
-
Créez unmodèle depagepour l'index dublog. Comme vous l'avez dit,denombreux développeurs dethèmes choisissent d'emprunter cette voie car c'est unmoyen rapide de vous donner le contrôle de l'index dublog,et cela vous donneen fait lapossibilité dejouer avec différentsmodèles d'index deblog (ce quiest utile lors du développement d'unthèmepolyvalent ).
- Avantages:polyvalent,permet de créer unthème robuste
- Inconvénients: vousperdez lapossibilité d'appeler lafonctionnaliténative de Wordpress relative à l'index dublog.
-
Créez un
front-page.php
,home.php
etindex.php
dans votrethème. Lafront-page
sera lapage d'accueil duthème.home
serapar défaut votreindex deblogetindex
sera votre solution de secourspourtous lesmodèles.- Avantages:nettoieet utilisepleinement les objetset méthodesnatifs de Wordpress
- Inconvénients: limitépar Wordpress:pasidéalpour laplupart destypes dethèmes richesen options que vous voyez aujourd'hui
Personnellement,j'aime aller avec # 2,car laplupart demesprojets de développement Wordpress cesjours-cine sontpas que desblogs: ce sont des sitesentiers avec une architecture d'informations approfondieet uneinteractivité complexe.
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.
-
Documentationpour cettefonctionnalité: 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
Je vais couvrirplusieursbases dansma réponse. :)
Si vous créez votreproprethèmeet que vous souhaitezmodifier laprésentationpar défaut de certainstypes depages (parexemple,lapage d'archive des catégories ou une seulepage d'article deblog),consultez le diagramme de la hiérarchie desmodèles WordPress . Ilmontre quelsfichiers de votre répertoire dethèmes sont utiliséspour afficher lestypes depublication.
En ayant unfichierphp dans votrethème qui correspond à unfichier de cette hiérarchie,il sera automatiquement utilisépar WordPress -tel que
single.php
pour afficher un seul article. Si vous avez déjà unthème avec cefichier,alors vouspouvez évidemment changer lefichieret il sera reflété sur le site.Séparément,si vous voulez avoir desmodèles depagepersonnalisésmais que vous voulez seulement qu'un administrateurpuisse les changer (sur unebasepost-par-post),alors vous devezfaire quelques vérifications sur les rôleset les capacités; cette réponse StackExchange peut être utile . (Vous devreztoujours créer cesmodèles depagepersonnalisés,voir ceci Article de Smashing Magazine ).
Sinon,si vous souhaitez qu'un administrateur choisisseplusglobalement desmodèles depage/articleen fonction de certains critères,ou choisisse desmodèles depagepersonnaliséspour l'ensemble du site,vous devrez ajouter une option de zone d'administration à votrethème,et du codepersonnalisé dans votrethèmepour afficher labonnepageen fonction de cette option. L'ajout d'une option dans la zone d'administration sefaitfacilement avec l'un desnombreuxpluginsmaispeut également êtrefait à lamain (voir,parexemple, cet article sur 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).
-
Mercipour votre réponse.Je sais comment créer desmodèles depagepour lespages/articlesbasés sur l'héritage,maisje neparvienspas àtrouver unmoyen de donner des options demodèlepour "Page d'index des articles deblog" qui utilise home.php (en utilisant lamêmeterminologie que le diagrammevous avezfourni).Ceciest défini lorsqu'un utilisateur administrateur choisit unepagepour afficher lespublications dans Tableau debord> Paramètres> Lecture.Cela affecte alors lapage home.php/index.php.Jene peuxpastrouver unmoyen de créer unmodèle alternatif sansn'attribuer lapage dans Tableau debord> Paramètres> Lecture.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 Vous devrezprobablement ajouter une option d'administration à votrethème quipermet de choisirentre les styles d'affichage de lapage d'index des articles deblog,puis éditer home.phppour lire la valeur de l'optionet afficher la variante depage appropriée.@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
-
Oui,je pense que l'utilisation de lafonction depersonnalisationestprobablement lameilleurefaçon de lefaire.Jepeux vérifier les options depersonnalisation,puis récupérer lapartie demodèle appropriée.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,tu veux dire quetu veux créertaproprepage demodèlepour afficher les articles deblog,n'est-cepas?
Ensuite,créez unfichierphpnommé
blog-template.php
À l'intérieur de cefichier,mettez ce code au-dessus detout.
<?php /* * Template Name: Blog Post */ ?>
Ensuite,ci-dessous le code ci-dessus,metteztout votre code de lapage
index.php/home.php
sur cettepage ci-dessus,enregistrez lefichieret maintenant créez unepage àpartir dudashboard
,dites que lenom de cettepageest"Blog"
Maintenant,du côté droit,chose page template
quenous venons de créer commeBlog Post
àpartir de cette liste-down oftemplates.Publiez lapageet vous êtesprêt à avoir votreproprepagepour afficher vosmessages.
Faites-moi savoir si quelque chose d'autreestnécessaire.
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,vous venez de reformuler la solution qu'OP a clairementindiquée commefausse;) Créer unmodèle depageet l'utiliser commeindex deblogn'estpas lameilleure approche,je suppose.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ż
-
Cen'estpas vraimentfauxen soi,juste que l'OP amal comprispourquoi lesgens onttendance à lefaire de cettefaçonIt's not really wrong per se, just that OP misunderstood why people tend to do it this way
- 0
- 2018-07-17
- Orun
Je souhaite créer unnouveaumodèle depagepersonnalisépour laprésentation des articles deblog. Jeme rends compte que lorsque vous attribuez unepagepour afficher des articles via Paramètres> Lecture ,il attribuera alors home.php pour afficher le contenu de cettepage - étant des articles sur unepage. Deplus,l'option d'attribution d'unmodèle depage dans la vue d'édition depage disparaît.
À l'heure actuelle,il affiche un articlepar défautpar vue d'article. Je souhaitefournir une autre option à l'administrateurpour sélectionner unmodèle différent quipourrait styliser lesblogs dans unemiseen pageen maçonnerie. Jene saispas commentprocéder.
Jepourrais lefaireen n'attribuantpas lapagepour afficher lesblogs dans la zone d'administration Paramètres> Lecture ,puisen autorisant l'utilisateur administrateur à attribuer lemodèle spécifique à lapageen utilisant Menu Attributs depage dans l'édition depagemais selon https://make.wordpress.org/themes/2014/06/28/correct-handling-of-static-front-page-and -custom-blog-posts-index-template/, cen'estpas labonneméthode .
J'aiessayé Google à la recherche de solutions,maisje ne cesse detrouver des recommandationspour lesplugins à utiliser. Quelqu'unpourrait-ilm'indiquer des ressources utiles?