web-dev-qa-db-ja.com

カスタムクエリでカテゴリを選択

私はこの質問がたくさん聞かれると確信しています、しかし私はそれを理解することができません、ポストを質問するためのすべての異なる方法は私を混乱させるので。

これが私の現在のコードです。
カテゴリID#22からの投稿のみを取得するようにコードに指示するにはどうすればよいですか。

<?php 
$querystr = " 
    SELECT post_id, AVG(meta_value) AS total, COUNT(post_id) as num_karakter
    FROM sk_postmeta
    WHERE meta_key = 'krit_karakter'
    GROUP BY post_id
    ORDER BY total DESC
    LIMIT 5
    "; 
$pageposts = $wpdb->get_results($querystr, OBJECT); 

if ($pageposts) { ?>
    <ul class="smartbar-items">
    <?php foreach ($pageposts as $post): 
        setup_postdata($post); ?> 
        <li><a href="<?php echo get_permalink($post->post_id);?>"><img src="<?php bloginfo('url');?>/wp-content/files_mf/<?php echo get_post_meta($post->post_id, 'game_poster', true); ?>" width="80" height="110" alt="<?php echo get_the_title($post->post_id);?>" />  <br /><?php echo get_the_title($post->post_id);?></a></li>
    <?php  endforeach; ?>
    </ul>

すべての助けをありがとう!

1
Martin-Al

これを2つの部分に分けて行います。

  1. これを自分のfunctions.phpファイルに追加して、カスタムフィールドをグローバルに取得します。

    function get_custom_field($key, $echo = FALSE) {
    global $post;
    $custom_field = get_post_meta($post->ID, $key, true);
    if ($echo == FALSE) return $custom_field;
    echo $custom_field;
    

    }

  2. 次のようにクエリを作成します。

値下げしてもいいとは思えないので、Pastieのコード http://pastie.org/1294594

1
Norcross

あなたはsk_term_relationshipsテーブルに参加する必要があるでしょう。

$querystr = " 
 SELECT post_id, AVG(meta_value) AS total, COUNT(post_id) as num_karakter
 FROM sk_postmeta p
 inner join sk_term_relationship t on p.post_id = t.object_id 
  and t.term_taxonomy_id = 22
 WHERE meta_key = 'krit_karakter'
 GROUP BY post_id
 ORDER BY total DESC
 LIMIT 5
"; 
3
Wadih M.