Afficher un article planifié sous wordpress et éviter l’erreur 404
Future post et limite WordPress
ou comment wordpress ne favorise pas l’affichage des articles planifiés et redirige vers la page 404. Les utilisateurs de WordPress depuis 6 ans sont parfois confrontés à une erreur assez étonnante. Il apparait impossible d’afficher pour un utilisateur non connecté un article qui a le statut planifié ; l’utilisateur est renvoyé naturellement vers la page 404, faute de droits suffisantes pour visualiser cet article.
Cette limite, volontaire, est gênante quand ont souhaite profiter d’une fonction native et afficher très simplement des dates d’événements, ateliers, formations, concerts….. Pour quelle raison empêcher l’affichage d’une fonction native, simple, pratique, sans risque à un public non connecté, cela m’échappe :).
Comment y remédier ?
Pour afficher un article planifié l’une des solutions possible est de modifier le fichier QUERY.PHP présent dans le noyau de WordPress sous le répertoire include/query.php
Modifiez la ligne suivante : 3312
if ( !$post_status_obj->public ) {
devient :
if ( !$post_status_obj->public & 'future' != $status ) {
Attention toutefois. Cette solution n’étant pas satisfaisante est une mise à jour de WordPress pourra écraser les modifications apportées et remettre en place le bug natif.
Ensuite, sous votre thème, peut-être aurez vous besoin, dans votre boucle article il faudra bien vérifier que vous pouvez afficher des articles non publiés mais planifiés.
exemple (peut afficher les articles publiés et planifiés) :
'post_status' => array( 'publish','future' )
ou
<?php query_posts('showposts=10&post_status=future'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div > <p class><b><?php the_title(); ?></b><?php edit_post_link('e',' (',')'); ?><br /> <span class="datetime"><?php the_time('j. F Y'); ?></span></p> </div> <?php endwhile; else: ?><p>No future events scheduled.</p><?php endif; ?
Si vous connaissez une solution plus propre, je suis preneur. Le fait de toucher au noyau me gêne beaucoup.
Laisser un commentaire
Rejoindre la discussion?N’hésitez pas à contribuer !