Pour diverses raisons vous pourriez avoir besoin de ce bout de code. Nous nous en servons particulièrement quand nous voulons afficher des actualités par date (actualités qui seront par conséquent « planifiées »). Normalement ces actualités ne s’affichent qu’à la date prévue.
Pour afficher les articles planifiés sur vos pages :
index.php ou archive.php et où vous voudrez
<?php $args = array( // 'posts_per_page' => 2, 'order' => 'ASC', 'orderby' => 'date', 'post_status' => 'future', // 'cat'=> 17 ); $recent = new WP_Query($args); while($recent->have_posts()) : $recent->the_post(); ?> // optimise l'affichage du lien (permalink) <a href="<?php echo get_permalink_alternative($post_id, true); ?>" title="<?php the_title(); ?>"> <?php the_title(); ?> </a> <div class="content"><?php the_excerpt();?></div> <?php endwhile; wp_reset_postdata(); ?>
functions.php
function get_permalink_alternative($post_id, $require = false){ $post_status = get_post_status($post_id); if($post_status === 'future'){ if($require){ require_once(ABSPATH . 'wp-admin/includes/post.php'); } $permalink_a = get_sample_permalink($post_id); $permalink = preg_replace('/\%postname\%/', $permalink_a[1], $permalink_a[0]); }else{ $permalink = get_permalink($post_id); } return $permalink; } /* Montrer les "futures" pour les non connectés */ 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; } add_filter('the_posts', 'show_future_posts');
Le lien de la page est souvent abscons malgré les réglages permaliens : https://wwww.site.com/?p=25&preview=true. Le code fourni permet également de changer le lien par quelque chose de plus … SEO.