使用SELECT SQL_CALC_FOUND_ROWS查询WordPress

时间:2016-04-21 07:54:14

标签: php mysql wordpress wordpress-theming

所以,我最近接受了一项改变WordPress主题的工作。 govspace。政府au和我被要求调查为什么在同一天发布的帖子根据发布时间不按顺序出现。

现在,内容的引入方式不是我习惯在WordPress中使用它的方式。我通常会使用WP_Query,所以下面的示例有点超出我的驾驶室。

此功能负责查询此页面的输出:https://arena.govspace.gov.au/news-media/media-releases/

function SQLQueryPost( $post_type,$meta_key,&$paged,&$rows,&$total_row, $limit_query = "limit 10"){
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

    global $wpdb;

    $test = $wpdb->posts;

    $sql = 'SELECT SQL_CALC_FOUND_ROWS meta_value, id, post_title 
            FROM '.$wpdb->posts.' join '.$wpdb->postmeta.' on '.$wpdb->posts.'.id = '.$wpdb->postmeta.'.post_id 
            WHERE 
            meta_value != "" and meta_key = "'.$meta_key.'"
            and post_status = "publish"
            and post_type = "'.$post_type.'"
            order by STR_TO_DATE( meta_value, "%d-%m-%Y") DESC
            '.$limit_query.' offset '.($paged - 1 )*10;

    $rows = $wpdb->get_results($sql);

    $total_row = $wpdb->get_var( "SELECT found_rows();" );

}

对于此查询,我只是将行order by STR_TO_DATE( meta_value, "%d-%m-%Y") DESC更改为order by post_date DESC,然后神奇地将它按日期和时间排序。

此功能负责为此页面提取多种内容类型:https://arena.govspace.gov.au/news-media/

function SQLQueryPostMulti( $post_types,$meta_key,&$paged,&$rows,&$total_row, $limit_query = "limit 10"){
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

    global $wpdb;

    $test = $wpdb->posts;

    $sql = 'SELECT SQL_CALC_FOUND_ROWS meta_value, id, post_title, post_type 
            FROM '.$wpdb->posts.' join '.$wpdb->postmeta.' on '.$wpdb->posts.'.id = '.$wpdb->postmeta.'.post_id 
            WHERE 
            meta_value != ""
            and post_status = "publish"
            and post_type IN (' . $post_types . ')
            order by STR_TO_DATE( meta_value, "%d-%m-%Y") DESC
            '.$limit_query.' offset '.($paged - 1 )*10;

    $rows = $wpdb->get_results($sql);

    $total_row = $wpdb->get_var( "SELECT found_rows();" );
}

这个查询似乎有点棘手。我尝试了相同的更改(order by STR_TO_DATE( meta_value, "%d-%m-%Y") DESCorder by post_date DESC),但在这种情况下,页面会返回所有10个结果的完全相同的条目。

基本上,如果有人能提供任何有关如何使查询的见解,不仅要按天订购帖子,还要按当天发布的时间订购,我将非常感激。

0 个答案:

没有答案