it-swarm.com.de

Meistgesehener Beitrag der letzten 2 Tage mit WP_Query

Hallo, ich habe Code, mit dem ich die meistgesehenen Posts der letzten zwei Tage abrufen möchte. Es scheint, als würde er nicht funktionieren, oder mein Code ist einfach falsch. Ich freue mich über jede Hilfe. Vielen Dank.

  $args = array(
    'post_type' => 'post',
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
        'date_query' => array(
            array(
                'after'  => '2 days ago',
            )
    )

);
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
    echo '<ul class="posts-list">';
    while ( $the_query->have_posts() ) {
        $the_query->the_post(); ?>
        <li>
        <?php if ( has_post_thumbnail() ) : ?>
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
                <?php the_post_thumbnail(); ?>
            </a>
        <?php endif; ?>

        <div class="content">
            <time datetime="<?php echo get_the_date(DATE_W3C); ?>"><?php the_time('d, F Y') ?></time>
            <span class="comments">
                <a href="<?php comments_link(); ?>" class="comments"><i class="fa fa-comments-o"></i> <?php echo get_comments_number(); ?></a>          
            </span>
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title();?></a>
        </div>
        </li>
    <?php }
    echo '</ul>';
    /* Restore original Post Data */
    wp_reset_postdata();
} else {
    // no posts found
}
2

Ich hatte das gleiche Problem. Ich hatte viele Male nach dieser Ausgabe gesucht. aber ich konnte keine lösung dafür finden.

holen Sie sich den meistgesehenen Beitrag der letzten 2 Tage, um die Beiträge der letzten 2 Tage nicht zu erhalten

Ich habe eine Tabelle mit dem Namen "wp_popularpostssummary".

 enter image description here 

Ergebnis werde sein

 enter image description here 

so erhalten Sie aus dieser Tabelle die Ergebnis-Post-IDs, indem Sie die folgende benutzerdefinierte Abfrage verwenden

$results = $wpdb->get_results($wpdb->prepare('SELECT postid,COUNT(*) AS qy FROM `wp_popularpostssummary` WHERE `view_date` BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 WEEK) AND CURRENT_DATE() GROUP BY postid ORDER BY qy DESC'));

das Abfrageergebnis ist die Beitrags-ID der meistgesehenen Beiträge der letzten Woche. Verwenden Sie dann die folgende foreach-Schleife, um die Post-ID zu erhalten

            $pids = [];

                $results = json_decode(json_encode($results), true);

                foreach ($results as $result) {
                   foreach ($result as $k => $v) {
                       if($k == 'postid'){
                           array_Push($pids, $v);
                       }
                   };

                }

verwenden Sie schließlich die Beitrags-ID, um Beitragsdetails abzurufen. Code wird folgen

                $args = array(
                    'post_type'         => 'post',
                    'post_status'       => 'publish',
                    'posts_per_page'    => '10',
                    'orderby'           => 'post__in',
                    'post__in'          => $pids

                );


                $query = new WP_Query( $args );   if ( $query->have_posts() ) {
                    // The Loop
                    while ( $query->have_posts() ) { //code here
                     }
                 }

Ändern Sie die Dauer des Datums nach Ihren Wünschen. Ich hoffe, das wird jedem in der Funktion helfen!
Lassen Sie mich wissen, wenn Sie eine Frage haben.

1
Shameem Ali P.K

Versuchen Sie, Ihren $args anzupassen. Sie müssen das Datum von vor zwei Tagen abrufen und dann das Jahr, den Monat und den Tag als Array in das Argument after übergeben.

Versuche dies:

$date = strtotime ( '-2 day' ); // Date from two days ago

$args = array(
    'post_type' => 'post',
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'date_query' => array(
        array(
            'after' => array(
                'year'  => date('Y', $date ),
                'month' => date('m', $date ),
                'day'   => date('d', $date ),
            ),
        )
    )
);

Weitere Dokumentation zu WP_Query und seinen Argumenten, einschließlich date_query, finden Sie hier .

0
Marc