2011-01-22 6 views
0
SELECT * FROM wp_posts 
    INNER JOIN wp_term_relationships 
      ON (wp_posts.ID = wp_term_relationships.object_id) 
    INNER JOIN wp_term_relationships 
      ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id 
     WHERE term_id = 1 AND taxonomy = 'category'; 

私はこのクエリを通じて投稿のリストを取得したいと思います。誰でもこのクエリを解決できますか?ここで私は間違っているこのMySQLのクエリのワードプレスMysqlのですか?

+0

どうしますか? –

答えて

2

こんにちは@stevenスピルバーグ:

あなたのエラーは、あなたの代わりに一度、wp_term_taxonomy一度wp_term_relationshipsを指定する二回wp_term_relationshipsを指定したということでした。ここでの作業クエリは次のとおりです。

SELECT * FROM wp_posts 
    INNER JOIN wp_term_relationships 
      ON wp_posts.ID = wp_term_relationships.object_id 
    INNER JOIN wp_term_taxonomy 
      ON wp_term_taxonomy.term_taxonomy_id = 
       wp_term_relationships.term_taxonomy_id 
     WHERE term_id = 1 AND taxonomy = 'category'; 

しかし、あなたは、ワードプレスで使用する.phpファイル内で、私はあなたがそのようなWP_Queryを使用して、これを出発物質として、別のアプローチを使用して推薦することを使用することを計画している場合:

$term = get_term_by('id',1); 
$query = new WP_Query(array(
    'taxonomy'=>'category', 
    'term'=>$term->slug, 
)); 
print_r($query->posts); 

あなたはquery_posts()コーデックスページWP_Queryのための他の引数を見つけることができます(引数が同じである。)あなたはおそらくあなたのクエリを微調整するために使用したいと思う他のいくつかの引数があります。もちろん

あなたはこのように、接頭辞を心配する必要はありませんので、その後、少なくとも$wpdbオブジェクトを使用して、いくつかの理由で直接SQLを使用する必要がある場合:

global $wpdb; 
    $sql = <<<SQL 
SELECT * FROM {$wpdb->posts} 
    INNER JOIN {$wpdb->term_relationships} 
      ON {$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id 
    INNER JOIN {$wpdb->term_taxonomy} 
      ON {$wpdb->term_taxonomy}.term_taxonomy_id = 
       {$wpdb->term_relationships}.term_taxonomy_id 
     WHERE 1=1 
      AND {$wpdb->term_taxonomy}.term_id = 1 
      AND {$wpdb->term_taxonomy}.taxonomy = 'category' 
SQL; 
    $posts = $wpdb->get_results($sql); 

・ホープ、このことができます。

-マイケブ

+0

ありがとう、しかし私は別の方法でそれを解決しました。 –

+0

@steven spielberg - どのように? – MikeSchinkel

関連する問題