Php Wordpress PostViews插件按日期排序

Php Wordpress PostViews插件按日期排序,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我目前正在帮助我的朋友优化她的网站。它是建立在wordpress主题上的,并且有一个插件ViewsPost用于只显示浏览次数最多的帖子。我需要做的是重写SQL,使它只获得上周浏览次数最多的帖子。在WHERE条件下,只说得到那些日期

我目前正在帮助我的朋友优化她的网站。它是建立在wordpress主题上的,并且有一个插件ViewsPost用于只显示浏览次数最多的帖子。我需要做的是重写SQL,使它只获得上周浏览次数最多的帖子。在WHERE条件下,只说得到那些日期<当前日期的帖子。如何编辑它

<?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");
                    }
                } */ ?>

更改发布日期条件:

post_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND NOW() -- or
post_date BETWEEN (DATE_SUB(NOW(), INTERVAL 1 WEEK)) AND DATE(NOW())
这将从当前日期减去一周,并查找
post\u date
介于获得的日期和当前日期之间的帖子

整个查询是:

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

更改发布日期条件:

post_date BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND NOW() -- or
post_date BETWEEN (DATE_SUB(NOW(), INTERVAL 1 WEEK)) AND DATE(NOW())
这将从当前日期减去一周,并查找
post\u date
介于获得的日期和当前日期之间的帖子

整个查询是:

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

我改变了这一点,但它仍然显示了2014年@ISHEGG发布的帖子,也许有一个视图缓存?尝试直接在数据库中运行查询(即在phpMyAdmin中)。它肯定不会从2014年得到结果。我在您的解决方案中发现了一个错误:
post\u date介于(date\u SUB(NOW(),INTERVAL 1 WEEK))和date(NOW())
。我刚刚加上了日期和一个手镯。无论如何,请随意编辑你的答案,我会接受的。谢谢@真奇怪。这两种方式都应该有效。你的MySQL版本是什么?不管怎样,我已经把它添加到了答案中。我已经改变了这一点,但它仍然显示了2014@ISHEGG的帖子。也许有一个视图缓存?尝试直接在数据库中运行查询(即在phpMyAdmin中)。它肯定不会从2014年得到结果。我在您的解决方案中发现了一个错误:
post\u date介于(date\u SUB(NOW(),INTERVAL 1 WEEK))和date(NOW())
。我刚刚加上了日期和一个手镯。无论如何,请随意编辑你的答案,我会接受的。谢谢@真奇怪。这两种方式都应该有效。你的MySQL版本是什么?不管怎样,我已经把它添加到了答案中。