Archives de type de message personnalisé par année et par mois?
-
-
Ma solution ci-dessousfonctionne si vous utilisezMy solution below works if you are using < WP 4.4, but since the release of WP 4.4, wp_get_archives() FINALLY supports custom post types: https://developer.wordpress.org/reference/functions/wp_get_archives/
- 0
- 2016-01-01
- Trevor
5 réponses
- votes
-
- 2012-02-12
Oui,vouspouvez. Tout ce dont vous avezbesoinest de créer unfiltrepour
wp_get_archives();
afin qu'il accepte leparamètrepost_type
:function my_custom_post_type_archive_where($where,$args){ $post_type = isset($args['post_type']) ? $args['post_type'] : 'post'; $where = "WHERE post_type = '$post_type' AND post_status = 'publish'"; return $where; }
puis appelez ceci:
add_filter( 'getarchives_where','my_custom_post_type_archive_where',10,2);
Chaquefois que vous souhaitez afficher l'archivepartype depublicationpersonnalisé,transmettez simplement les argumentspost_type:
$args = array( 'post_type' => 'your_custom_post_type', 'type' => 'monthly', 'echo' => 0 ); echo '<ul>'.wp_get_archives($args).'</ul>';
Yes, you can. All you need is make a filter for
wp_get_archives();
so it acceptspost_type
parameter:function my_custom_post_type_archive_where($where,$args){ $post_type = isset($args['post_type']) ? $args['post_type'] : 'post'; $where = "WHERE post_type = '$post_type' AND post_status = 'publish'"; return $where; }
then call this:
add_filter( 'getarchives_where','my_custom_post_type_archive_where',10,2);
Whenever you want to display archive by custom post type, just pass the post_type args:
$args = array( 'post_type' => 'your_custom_post_type', 'type' => 'monthly', 'echo' => 0 ); echo '<ul>'.wp_get_archives($args).'</ul>';
-
Avez-vousessayé cette solution?Il récupère correctement la liste desmois avec unmessage de votre CPTet lenombre demessages,mais les liens sontinutiles.En cliquant dessus,vous accédez aumoispour l'ensemble du site,paspour le CPT.Did you try this solution? It correctly fetches the list of months with a post from your CPT and the number of posts, but the links are useless. Clicking them takes you to the month for the whole site, not for the CPT.
- 3
- 2012-09-21
- jerclarke
-
Après quelques recherches (voir la réponse de Tom Nowell ci-dessous),j'ai abandonné les archivesmensuellespour lestypes depublicationpersonnalisés.Au lieu de cela,j'ai utilisé une catégorie depublicationet changéma structure de lienpermanenten `/% category%/% year%/%monthnum%/%postname%/`.Ensuite,ilpeut êtrepossible d'utiliser un hook similaire à ci-dessus,pourmodifier les lienspour commencerpar `/% category%/` au lieu de simplement la date.After some digging (see Tom Nowell's answer below), I gave up on monthly archives for custom post types. Instead, I used a post category, and changed my permalink structure to `/%category%/%year%/%monthnum%/%postname%/`. Then, it might be possible using a hook similar to above, to modify the links to start with `/%category%/` instead of just the date.
- 0
- 2013-03-22
- Kevin C.
-
Question à ce sujet.Cela crée des URL comme: `mysite.com/2013/04`mais cela conduit à un 404. Letype depublicationpersonnaliséest disponible sur:`mysite.com/cats` ce quime faitpenser à `mysite.com/cats/2013/04`serait ce que le lien devrait être,mais cela se résout également à un 404. Commentfairefonctionner les liens d'archive?Question on this. This creates urls like: `mysite.com/2013/04` but this leads to a 404. The custom post type is available at: `mysite.com/cats` which makes me think `mysite.com/cats/2013/04` would be what the link should be, but this also resolves to a 404. How do you get the archive links to work?
- 0
- 2013-04-11
- gaoshan88
-
Mieuxencore,ilexisteenfin unpluginpourgérer cettefonctionnalitémanquante dans WordPress.Il a été créépar un contributeurprincipalessayant de résoudre ceproblème dans lenoyau.Lepluginestfournipournous aiderjusqu'à ce que leproblème soit correctement résolu dans lenoyau.https://wordpress.org/plugins/archives-for-custom-post-types/Even better, there is finally plugin to deal with this missing functionality in WordPress. It was created by a core contributor trying to fix this issue in the core. The plugin is provided to get us through until the issue is properly addressed in the core. https://wordpress.org/plugins/archives-for-custom-post-types/
- 2
- 2014-07-09
- Trevor
-
- 2011-11-16
Non,la ligne officielle des développeurs Wordpress était que lestypes depublicationpersonnalisésn'étaientpas destinés àfaire letravail demessages ordinairesnormaux,et que si vous avezbesoin d'archives depublication de dates,etc.,vousne lefaitespas les choses correctement,et il vautmieux utiliser lesformats depublication,etc.
Lestypes depublicationpersonnalisés sont destinés aux applications Web,etc.,touten faisant quelque chose comme la configuration d'untype depublicationpersonnalisé qui agit comme unblog secondaire ouparallèle avec unnom différent,parexempleblog vsnews,avec lesmêmes capacités,n'estpas ce à quoi lafonctionnalité était destinée,et signifierait d'autresproblèmestechniques découlant de samiseen œuvre.
Si vousinsisteztoujours sur cepointet que le simplefait d'utiliser destaxonomiespersonnaliséeset desformats depublicationne suffitpas,vouspouvez ajouter des règles de réécriture dansfunctions.phpet rediriger les archives année/mois de certaines URL vers lapage d'archive depublication,puis vérifier sur lapage d'archive depublicationpersonnalisée si vous avez spécifié des variables dans vos règles de réécritureet chargez unmodèle différent,en vous assurant dans vos règles de réécriture de définir les valeurs appropriées.
You don't, the official line from the Wordpress developers was that custom post types weren't intended to do the job of normal ordinary posts, and that if you need post archives of dates etc, then you're not doing things correctly, and you're better off using post formats etc..
Custom post types are intended for web applications etc, whereas doing something such as setting up a custom post type that acts as a secondary or parallel blog with a different name, e.g. blog vs news, with the same abilities, is not what the feature was intended for, and would mean other technical issues arising from its implementation.
If you are still insistent on this, and simply using custom taxonomies and post formats is not enough, you could add rewrite rules in functions.php and redirect year/month archives in certain URLs to the post archive page, and then check on the custom post archive page if you've specified variables in your rewrite rules and load a different template, making sure in your rewrite rules to set the appropriate values.
-
Il semble unpeu étrange qu'ilsn'iraient que si loin avec cettefonctionnalité.Pouvez-vousme donner unexemple de lafaçon dont lespublicationspersonnalisées devraient être utilisées?It does seem a bit odd that they would only go so far with this functionality. Can you give me an example of how custom posts should be used?
- 0
- 2011-11-17
- Dan Lee
-
Les articlespersonnalisés doivent être utiliséspourtout ce quin'estpas couvertpar laportée despageset des articles deblog (ou des articles deblog avec unnom différentmais quifonctionnent de lamêmemanière,parexemple,articles/actualités/agenda/etc.) Exemples d'utilisations correctes despublicationspersonnalisées: événements,menus,emplacements,formulaires,journaux,etc.Custom posts should be used for anything that isn't covered by the scope of pages and blog posts ( or blog posts with a different name but work the same, e.g. articles/news/diary/etc ) Examples of correct uses of custom posts include: events, menus, locations, forms, logs, etc
- 0
- 2011-11-17
- Tom J Nowell
-
Lespublicationspersonnalisées sontessentiellement lemoyen deproduire des applications Web,cene sontpas lesmoyens de dupliquer lemenu depublication dans lebackendpour une éditionplusfacile (et unetelle utilisation rendrait wordpressbeaucoupplus lentet seraitplus unetâche que vousne lepensez)Custom posts are basically the means of producing web apps, they're not the means of duplicating the post menu in the backend for easier editing ( and such a use would make wordpress much slower and be more of a task than you realise to do )
- 0
- 2011-11-17
- Tom J Nowell
-
UUUUUgh.C'est labonne réponse à la questiontragiquement.Jen'arrivepas à croire que l'explication ci-dessus soitbasée sur «nousne devrionspas avoir d'URL de datepour les CPT»,mais c'estpresque définitivement «les URL de datepour les CPT sonttrop compliquées» quimotive la décision dene pasmettreen œuvre.CLAIREMENT,il y a des cas où lesgens voudraient des archives de datepour untype depublicationpersonnalisé,vousne pouvezpasfaire disparaître ce désir évidenten indiquant lesformats depublication.UUUUUgh. This is the correct answer to the question tragically. I can't believe that the explanation above is based on "we shouldn't have date URLs for CPTs" though, it is almost definitely "Date URLs for CPTs are too complicated" that is driving the actual decision not to implement. CLEARLY there are cases where people would want date archives for a custom post type, you can't make that obvious desire dissapear by pointing out post formats.
- 1
- 2012-09-21
- jerclarke
-
Je suisfortementen désaccord.Lestypes demessagespersonnalisés sont destinés à être utiliséspourtout cepour quoi vous voulez qu'ils soient utilisés,nullepart dans le Codexilest dit qu'ils sontpour les "applications Web".Deplus,vouspourrieztrèsbien avoirbesoin d'une section "actualités" qui a sapropretaxonomiepersonnaliséeet vous voudriez des archivespour celles-ci.Oumême letype "événements" suggéré,qui,je suis d'accord,est une utilisationparfaitepour les CPT,maisencore unefois,ceux-cipourraientfacilement avoirbesoin d'archivesbasées sur la date.I have to strongly disagree. Custom post types are meant to be used for whatever you want them to be used for, no where in the Codex does it say they are for "web apps". Also, you may very well need a "news" section which has it's own custom taxonomy and you'd want archives for those. Or even the suggested "events" type, which I agree are a perfect use for CPTs, but again those easily could need date based archives.
- 1
- 2015-01-02
- Trevor
-
Une section d'actualités suggère soit unformat d'article,soit unetaxonomieindiquant que vous avez classé un article comme actualité.Untype depublicationpersonnalisén'estpasnécessairepour unetelle chose.Quoi qu'ilen soit,je sens que votre définition d'une application Webn'estpeut-êtrepas lamême que lamienne,je définirai simplementmoninterprétation dans ce contexte commetout ce quin'estpas unepage statique,ou un article deblog,quinécessite un article comme une représentation du contenu,et vous déférerait au développeurprincipal de WordPress qui l'ainitialement déclaré (probablement Otto ou Nacin)A news section suggests either a post format or a taxonomy indicating you have classified a post as news. A custom post type is not necessary for such a thing. Eitherway I sense that your definition of a web app may not be the same as mine, I will simply define my interpretation in this context as anything that is not a static page, or a blog post, that requires a post like representation of content, and would defer you to the WordPress core developer who originally stated this ( Probably Otto or Nacin )
- 0
- 2015-01-03
- Tom J Nowell
-
Eneffet,nous définissons définitivement les applications Web différemment.Labonnenouvelleest que Jack Lenox d'Automattic a unplugin qui vamaintenant activer les archivespour les CPT,[voirma réponse ci-dessous] (http://wordpress.stackexchange.com/a/173810/17461).Ainsi,nouspouvonsenfin créerfacilement des archives de datespour des choses comme "Événements" quipourraient vraiment utiliser cettefonctionnalité.Indeed we definitely define web apps differently. The good news is Jack Lenox from Automattic has a plugin that will now enable archives for CPTs, [see my answer below](http://wordpress.stackexchange.com/a/173810/17461). Thus we can now finally easily create date archives for things like "Events" which really could use this functionality.
- 0
- 2015-01-23
- Trevor
-
Je suppose que la ligne officielle des développeurs WordPress a changé :) ... C'estmaintenant dans lenoyau.I guess the official line from the WordPress developers has changed :) ... This is now in the core.
- 0
- 2016-05-23
- Trevor
-
- 2015-01-02
< EDIT ->tant que cette réponsefonctionnetoujourspour & lt; WP4.4,puisque lapriseen charge de 4.4pour lestypes depublicationpersonnalisésest désormaisincluse dans
wp_get_archives()
Ilexisteenfin une solution simple,rapideet facilepour les archivesbasées sur la date destypes d'articlespersonnalisés dans WordPress! Il s'agit d'unproblème de longue date qui a été enregistréici dans WP Core Trac.
Iln’apasencore été résolumais l’un des contributeurs au Trac apublié un plugin simple dans GitHub qui vouspermettra d'avoir des archivesbasées sur la datepour les CPT.
Après avoirinstallé ceplugin,ou ajoutémanuellement le code de vosfonctions,vous utilisez des archivespour les CPTen tant quetelles:
<?php wp_get_archives_cpt( 'post_type=custom_post_type' ); ?>
Notez que cettenouvellefonction
wp_get_archives_cpt
fonctionne de lamêmemanière que lawp_get_archives
standard afin que vouspuissiez utilisern'importe lequel des arguments réguliers qu'elle accepte. Cependant,cela ajoute simplement lapossibilitépour vous depouvoir ajouter un argument denom detype depublicationpersonnalisé.EDIT -> while this answer still works for < WP4.4, since 4.4 support for Custom Post Types is now included in
wp_get_archives()
There finally is a simple, quick and easy solution for date based archives of Custom Post Types in WordPress! This has been a long standing issue that is recorded here in the WP Core Trac.
It has yet to be solved but one of the contributors to the Trac has posted a simple plugin in GitHub that will enable you to have date based archives for CPTs.
After installing this plugin, or adding the code for your functions manually you case use archives for CPTs as such:
<?php wp_get_archives_cpt( 'post_type=custom_post_type' ); ?>
Note this new function
wp_get_archives_cpt
works the same as the standardwp_get_archives
so you can use any of the regular arguments it accepts. However, it simply adds the ability for you to be able to add a custom post type name argument. -
- 2013-09-12
Pas assez de réputationpour ajouter ceci à la réponse detaiken désolé.
Cependant,je voulais ajouter que sa réponsefonctionnaitpourmoi,mais les liens étaient auformat «localhost/date/2010».Alors quej'avaisbesoin duformat «localhost/postslug/2010».J'aipu résoudre ceproblèmeen utilisant une chaîne de remplacement sur la sortie de wp_get_archives.
Donc,selon lafaçon dont vospermaliens sont définis,ce code résoudra leproblème 404et redirigera les liens vers la structure depermalien detype depublicationpersonnalisée:
$yearly_archive = wp_get_archives(array( 'type' => 'yearly', 'post_type' => '<your post type name>', 'echo' => '0') ); $blog_url = get_bloginfo('url'); echo str_replace(($blog_url . '/date'), ($blog_url . '<your post type slug>'),$yearly_archive);
Not enough reputation to add this to taiken's answer sorry.
However wanted to add that his answer did work for me, however the links were in the 'localhost/date/2010' format. Whereas I needed 'localhost/postslug/2010' format. I was able to fix this by using a string replace on the output of wp_get_archives.
So depending on how your permalinks are set this code will fix the 404 problem and redirect the links to the custom post type permalink structure:
$yearly_archive = wp_get_archives(array( 'type' => 'yearly', 'post_type' => '<your post type name>', 'echo' => '0') ); $blog_url = get_bloginfo('url'); echo str_replace(($blog_url . '/date'), ($blog_url . '<your post type slug>'),$yearly_archive);
-
- 2014-04-17
Jene peuxpas ajouter aumessage detakien,alors voici ce quej'aifini par devoirfaire:
add_action('init', 'my_year_archive_rewrites'); function my_year_archive_rewrites() { add_rewrite_rule('resource/news/([0-9]{4})/page/?([0-9]{1,})/?', 'index.php?post_type=news&year=$matches[1]&paged=$matches[2]', 'top'); add_rewrite_rule('resource/news/([0-9]{4})/?', 'index.php?post_type=news&year=$matches[1]', 'top'); } add_filter('getarchives_where', 'my_custom_post_type_archive_where', 10, 2); function my_custom_post_type_archive_where($where,$args){ $post_type = isset($args['post_type']) ? $args['post_type'] : 'post'; return "WHERE post_type = '$post_type' AND post_status = 'publish'"; } add_filter('year_link', 'my_year_link'); function my_year_link($link) { global $wp_rewrite; if(true) { // however you determine what archive you want $link = str_replace($wp_rewrite->front, '/resource/news/', $link); } return $link; }
Appel de wp_get_archives ()
wp_get_archives(array('post_type'=>'news', 'type'=>'yearly'));
Can't add to takien's post so here's what I ended up having to do:
functions.php
add_action('init', 'my_year_archive_rewrites'); function my_year_archive_rewrites() { add_rewrite_rule('resource/news/([0-9]{4})/page/?([0-9]{1,})/?', 'index.php?post_type=news&year=$matches[1]&paged=$matches[2]', 'top'); add_rewrite_rule('resource/news/([0-9]{4})/?', 'index.php?post_type=news&year=$matches[1]', 'top'); } add_filter('getarchives_where', 'my_custom_post_type_archive_where', 10, 2); function my_custom_post_type_archive_where($where,$args){ $post_type = isset($args['post_type']) ? $args['post_type'] : 'post'; return "WHERE post_type = '$post_type' AND post_status = 'publish'"; } add_filter('year_link', 'my_year_link'); function my_year_link($link) { global $wp_rewrite; if(true) { // however you determine what archive you want $link = str_replace($wp_rewrite->front, '/resource/news/', $link); } return $link; }
Calling wp_get_archives()
wp_get_archives(array('post_type'=>'news', 'type'=>'yearly'));
-
Voir la sienneest votrepremière réponse.Juste un conseilpour répondre aux questions,n'ajoutezpas simplement du code ou des liens.Bien que votre codepuissefonctionner,ilesttoujours agréable de savoir ce quefait votre codeet pourquoiil devraitfonctionner.Sinon,votre réponseestbien formatée.+1pour çaSee his is your first answer. Just a tip when answering questions, don't just add code or for that matter links. Although your code might work, it is always nice to know what your code does and why it should work. Otherwise your answer is nicely formatted. +1 for that
- 0
- 2014-04-17
- Pieter Goosen
-
Comment afficher les archives d'untype depublicationpersonnalisépar année & amp;Mois?