こんにちは私は最後の2日間で最も見られた記事を取得することを意図したコードを持っていて、それは働かないか、多分私のコードが間違っているだけのようです。私はどんな助けにも感謝します。ありがとう。
$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日間の投稿を取得しないで過去2日間の閲覧数が最も多い投稿を取得する
"wp_popularpostssummary"という名前のテーブルがあります。
結果が出ます
したがって、この表から次のカスタムクエリを使用して結果のpostidsを取得します。
$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'));
クエリ結果は、過去1週間で最も閲覧された投稿の投稿IDです。それからpost idを得るために次のforeachループを使って
$pids = [];
$results = json_decode(json_encode($results), true);
foreach ($results as $result) {
foreach ($result as $k => $v) {
if($k == 'postid'){
array_Push($pids, $v);
}
};
}
最後に、投稿IDを使って投稿の詳細を取得します。以下のコード
$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
}
}
必要に応じて期間を変更します。この機能がこの機能の誰にでも役立つことを願っています!
質問があるかどうかを教えてください。
$args
を調整してみてください。 2日前の日付を取得してから、年、月、日を配列としてafter引数に渡す必要があります。
これを試して:
$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 ),
),
)
)
);
WP_Query
とその引数(date_query
を含む)に関するより多くのドキュメントは ここ にあります。