it-swarm.com.de

So zeigen Sie die Detailseite zukünftiger (geplanter) Beiträge an

Meine Frage hier ist, alle einzelnen Detailseiten der zukünftigen geplanten Pfosten anzuzeigen. Es wird 404 Seite zurückgegeben. Wie geht das in WordPress?

Was ich bisher benutzt habe ist

$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 );

Aus diesem Code erhalte ich veröffentlichte und geplante Beiträge. Der Permalink des veröffentlichten Posts funktioniert einwandfrei. Es funktioniert jedoch nicht für geplante Posts und das Umleiten auf 404-Seitenfehler.

1
TBI Infotech

Nach einigen Recherchen hat das bei mir geklappt:

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;
}

Hoffentlich funktioniert es für andere, die das gleiche Problem haben.

1
TBI Infotech

Eine viel sauberere Lösung besteht darin, den Post-Status einfach über pre_get_posts festzulegen. Standardmäßig zeigt die Hauptabfrage nur veröffentlichte Beiträge für abgemeldete Benutzer und veröffentlichte und private Beiträge für angemeldete Benutzer.

Wir können zukünftige Beiträge zur Hauptabfrage mit pre_get_posts hinzufügen.

add_action( 'pre_get_posts', function ( $q )
{
    if (    !is_admin()
         && $q->is_main_query()
         && $q->is_single()
    ) {
        $q->set( 'post_status', ['publish', 'future'] );
    }
});
2
Pieter Goosen

Probieren Sie diesen Code auch aus, um eine Liste der geplanten Posts anzuzeigen:

<?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; } ?>
0
Zohair Baloch