2017-08-16 13 views
1

現在、私は自分のウェブサイトを最適化するために友人を助けています。それは、WordPressのテーマに基づいて構築され、最も多く閲覧された投稿のみを表示するために使用されるプラグインのViewsPostがあります。私がする必要があるのは、SQLを書き直して先週に最も多く閲覧された投稿のみを取得することです。 WHERE条件では、日付が現在の日付よりも<である投稿のみを取得すると言われています。それを編集するには?Wordpress PostViewsプラグインを日付順に並べ替え

<?php 
} 


function gen21_display_most_viewed_posts($smallthumbs = true) { 

    global $wpdb; 
    /* taken from wp-postviews.php by Lester Chan http://lesterchan.net/portfolio/programming/php/ */ 
    $favourites = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."' AND post_type = 'post' AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT 4"); 

    if (!$favourites) return false; 

     foreach ($favourites as $fav) { ?> 
      <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12 item"> 
       <a class="front-item" href="<?php echo get_permalink($fav); ?>"> 
       <?php 

       echo get_the_post_thumbnail($fav, 'thumbnail'); 
       /* 
       if ($smallthumbs) { 
        echo get_the_post_thumbnail($fav, 'small'); 
       } elseif (has_post_thumbnail($fav)) { 
        if (rand(0,1) == 1) { 
         echo get_the_post_thumbnail($fav, "medium"); 
         } 
        else { 
         echo get_the_post_thumbnail($fav, "small"); 
        } 
       } */ ?> 

答えて

0

変更post_date条件:これは、現在の日から一週間を減算し、post_dateが得られた日付と

全体のクエリがある現在の日付の間にある記事を見つけ

post_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND NOW() -- or 
post_date BETWEEN (DATE_SUB(NOW(), INTERVAL 1 WEEK)) AND DATE(NOW()) 

$favourites = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 WEEK) AND NOW() AND post_type = 'post' AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT 4"); // or 
$favourites = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date BETWEEN (DATE_SUB(NOW(),INTERVAL 1 WEEK)) AND DATE (NOW()) AND post_type = 'post' AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER BY views DESC LIMIT 4"); 
+0

私はそれを変更しましたが、まだ2014年の投稿を表示しています。@ishegg –

+0

ビューキャッシュがありますか?データベース(phpMyAdminなど)で直接クエリを実行してみてください。 – ishegg

+0

解決策の間違いを見つけました: 'post_date BETWEEN(DATE_SUB(NOW()、INTERVAL 1 WEEK))AND DATE(NOW())'。私はちょうど日付の単語と1つのブレスレットを追加しました。とにかく、あなたの答えを編集してください。私はそれを受け入れます。ありがとう! @ishegg –

関連する問題