web-dev-qa-db-fra.com

Sélectionner une catégorie dans une requête personnalisée

Je suis sûr que cette question est posée beaucoup, mais je ne peux pas le comprendre, car toutes les différentes façons d'interroger des publications m'embrouillent.

Voici mon code actuel.
Comment puis-je dire au code de ne recevoir que les messages de la catégorie 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>

Merci pour toute aide!

1
Martin-Al

Je le ferais en deux morceaux.

  1. Ajoutez ceci dans votre fichier functions.php pour récupérer globalement les champs personnalisés:

    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. Construisez votre requête comme suit:

Je n'arrive pas à obtenir de démarque pour jouer à Nice, alors voici le code dans Pastie http://pastie.org/1294594

1
Norcross

Vous devez rejoindre la table 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.