Support wordpress et Prestashop

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

wordpress future article planifiedComment 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.

0 réponses

Laisser un commentaire

Rejoindre la discussion?
N’hésitez pas à contribuer !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *