0

wordpressで特定の投稿を取得する機能を実装したいと考えています。

入力

ページ番号

種別名

変数

items_per_page = 10

出力

query_posts() 関数の結果のように、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') を呼び出すと、20 番目が返されます。 ~「ワードプレス」カテゴリーの29回目の投稿。

だから、この問題を理解する方法があるかどうか疑問に思っています。事前にThx。

4

1 に答える 1

0

上記が機能しない理由は、wp_postsテーブルにCATEGORYorPOSTSフィールドがないためだと思います。以下に基づいて投稿を返すことができるように、コードを変更しました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); 
 }
于 2011-12-11T17:22:14.620 に答える