如何在wordpress中获得某些帖子

时间:2011-12-11 17:02:52

标签: wordpress categories posts

我想实现一个函数来获取wordpress中的某些帖子。

INPUT

PAGE_NUMBER

CATEGORY_NAME

可变

items_per_page = 10

输出

发布数组,就像query_posts()函数的结果一样。

这是我的代码:

$page_number = $_GET["page_number"]
$category_name = $_GET["category_name"]

function app_get_posts($page_number, $category,$items_per_page = 10)
{
    global $wpdb;  
    $select ="SELECT POSTS FROM wp_posts  WHERE CATEGORY = ".$category." LIMIT (".$page_number." - 1) * ".$items_per_page.",".$page_number."  * ".$items_per_page; //it didn't work.
    return $wpdb->query($select); 
}

当我调用函数app_get_posts('2','tech')时,它会返回“tech”类别中的第10~19个帖子,当我调用app_get_posts('3','wordpress')时,它会返回“wordpress”类别中的第20~29个帖子。

所以我想知道是否有办法找出这个问题。 感谢你。

1 个答案:

答案 0 :(得分:0)

我猜上述原因不起作用的原因是因为wp_posts表没有CATEGORYPOSTS字段。我修改了您的代码,因此您可以根据taxonomy返回帖子:

function app_get_posts($page_number, $category,$items_per_page = 10)
{
   global $wpdb;  
   $start = ($page_number-1) * $items_per_page;
   $select ="SELECT DISTINCT wp.* FROM wp_posts wp  
             INNER JOIN wp_term_relationships rs ON rs.object_id = wp.ID 
             INNER JOIN wp_terms t ON t.term_id = rs.term_taxonomy_id 
             WHERE t.name = ".$category." LIMIT ".$start.",".$items_per_page;
   return $wpdb->query($select); 
 }