获取最近12天的帖子,然后在WordPress中随机发布

时间:2014-02-18 作者:Pritesh Mahajan

我想显示最近12天的帖子,然后是完全随机的帖子,显示我已经完成了几乎完成的工作,但我的问题是我想在一个页面中只显示12篇帖子,然后分页就会开始。在我的代码中,问题将出现在下一页,如果最近的帖子数超过12,比如15,那么剩下的3篇帖子将显示在下一页中,然后是随机的。请参阅下面我的所有代码。

$limit = 12; 

    $total_pages = $wpdb->get_var($select);

    $page = mysql_escape_string(get_query_var(\'page\'));

    if($page)
    {
        $start = ($page - 1) * $limit;
                    print_r($start);
    }
    else{
        $start = 0; 
    }   

    if(!empty($searchcountry) || !empty($searchresort) || !empty($searchresortresponse))
    {
        $query = "SELECT `".$wpdb->prefix."posts`.* FROM `".$wpdb->prefix."posts` JOIN `".$wpdb->prefix."postmeta` ON  `".$wpdb->prefix."postmeta`.post_id = `".$wpdb->prefix."posts`.ID $where LIMIT $start, $limit";
        $record = $wpdb->get_results($query);

    }
    else
    {

                $days = "post_date > \'" . date( \'Y-m-d H:i:s\', strtotime( \'-12 days\' ) ) . "\'";
              //echo "SELECT * FROM `".$wpdb->prefix."posts` WHERE `post_type` = \'custompost\' and `post_status` = \'publish\' and $days order By `post_date` DESC LIMIT $start, $limit";
              //echo "SELECT * FROM `".$wpdb->prefix."posts` WHERE `post_type` = \'custompost\' and `post_status` = \'publish\' and $notin order By RAND() LIMIT $start, $checklimit";
               echo  $select_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE `post_type` = \'custompost\' and `post_status` = \'publish\' and $days order By `post_date` DESC LIMIT $start, $limit";
                $record1 = $wpdb->get_results($select_query);
                $count = count($record1);
               // print_r($count); die();   
               if($count <= 12)
                {
                    $checklimit = 12-$count;     
                   // print_r($checklimit); die();
                    $ids=array();
                    foreach($record1 as $key => $id){$ids[] = $id->ID;}

                    $notin= "`ID` NOT IN (".implode(\',\', array_map(\'intval\', $ids)).")";
                    $select =  "SELECT * FROM `".$wpdb->prefix."posts` WHERE `post_type` = \'custompost\' and `post_status` = \'publish\' and $notin order By RAND() LIMIT $start, $checklimit";  
                    $record2 = $wpdb->get_results($select);
                    $record = array_merge($record1, $record2);

                }
                else {
                    $record = $record1;
                }





    }
我们可以从一个查询中解析。我使用了2个查询,这将产生问题。请检查。

1 个回复
SO网友:kraftner

如果您试图更改主查询,请查看query_posts().

您应该能够在不编写自定义查询的情况下使用查询参数实现所需的所有功能:WP_Query->orderby &;WP_Query->date_query.

结束

相关推荐

Custom Post Types in plugins?

我一直在想这个。在我现在看到的大多数插件中,它们看起来像CPT,但没有“已发布”链接。他们也不担任职务。它们只是停留在仪表板中的插件,页面和列列表顶部有“添加新”链接,当您单击“编辑”时,可以像在任何其他CPT中一样编辑项目。所以我想知道他们是否是CPT?如果是的话,有没有关于这方面的教程?我正在考虑为我的网站创建一个插件,我想要的是构建一个插件,我可以“添加新项目”,并保存项目(并且可以编辑)。我可以通过短代码调用项目。我知道如何在函数中创建CPT。php和我一直在阅读关于基本插件创建的内容。我似乎找不