Ma question ici est d'afficher toute la page de détail des futurs messages programmés. Il retourne 404 pages. Comment cela peut-il être fait dans wordpress?
Ce que j'ai utilisé jusqu'à présent, c'est
$args = array(
'posts_per_page' => 10,
'category__in' => $category->term_id,
'orderby' => 'post_date',
'meta_key' => 'starttime',
'order' => 'ASC',
'post_type' => 'post',
'post_status' => array('publish','future'),
);
$loop1 = new WP_Query( $args );
À partir de ce code, je reçois des publications et des publications planifiées. Le permalien de l'article publié fonctionne bien. Mais cela ne fonctionne pas pour les publications programmées et la redirection vers une erreur de page 404.
Après quelques recherches, cela a fonctionné pour moi:
add_filter('the_posts', 'show_future_posts');
function show_future_posts($posts)
{
global $wp_query, $wpdb;
if(is_single() && $wp_query->post_count == 0)
{
$posts = $wpdb->get_results($wp_query->request);
}
return $posts;
}
Espérons que cela fonctionnera pour les autres qui sont dans le même problème.
Une solution beaucoup plus propre consiste simplement à définir le statut de la publication via pre_get_posts
. Par défaut, la requête principale affiche uniquement les publications publiées pour les utilisateurs déconnectés et les publications publiées et les publications privées pour les utilisateurs connectés.
Nous pouvons ajouter des publications futures à la requête principale avec pre_get_posts
add_action( 'pre_get_posts', function ( $q )
{
if ( !is_admin()
&& $q->is_main_query()
&& $q->is_single()
) {
$q->set( 'post_status', ['publish', 'future'] );
}
});
Essayez également ce code pour afficher la liste des publications programmées:
<?php $my_query = new WP_Query('post_status=future&order=DESC&showposts=5');
if ($my_query->have_posts()) {
while ($my_query->have_posts()) : $my_query->the_post(); $do_not_duplicate = $post->ID; ?>
<li><?php the_title(); ?></li>
<?php endwhile; } ?>