2011-01-28 84 views

答えて

3

残念ながら、query_postsではクエリをcomment_count=0に制限することはできません。

query_posts('orderby=comment_count&order=ASC'); 

しかし、それはそれだけでゼロコメント最初を有するものを表示し、ゼロコメントをのみ表示投稿しません:あなたはこれを行うことができます。

より複雑(より良い)ソリューションは、特に0コメントを投稿するクエリを制限するカスタムクエリを使用することですが、それはあなたがあなた自身のループ構造を作成しなければならないこと(少なくともso far as I can tell

global $wpdb; 
$query = " 
    SELECT * 
    FROM {$wpdb->prefix}posts 
    WHERE 
    {$wpdb->prefix}posts.post_type = 'post' 
    AND {$wpdb->prefix}posts.post_status = 'publish' 
    AND {$wpdb->prefix}posts.comment_count = 0 
    ORDER BY {$wpdb->prefix}posts.post_date 
    DESC; 
"; 

$pageposts = $wpdb->get_results($query, OBJECT); 

<?php if ($pageposts): ?> 
<?php global $post; ?> 
<?php foreach ($pageposts as $post): ?> 
<?php setup_postdata($post); ?> 

<div class="post" id="post-<?php the_ID(); ?>"> 
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"> 
    <?php the_title(); ?></a></h2> 
    <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small> 
    <div class="entry"> 
     <?php the_content('Read the rest of this entry »'); ?> 
    </div> 
    <p class="postmetadata">Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> 
    <?php comments_popup_link('No Comments »', '1 Comment »', '% Comments »'); ?></p> 
</div> 
<?php endforeach; ?> 
<?php else : ?> 
    <h2 class="center">Not Found</h2> 
    <p class="center">Sorry, but you are looking for something that isn't here.</p> 
    <?php include (TEMPLATEPATH . "/searchform.php"); ?> 
<?php endif; ?> 

これはあなたの知識の中で実装されているようですか?

+0

。私はちょうど遊んで、私がそれを働かせることができるかどうか見る。すばらしい答えをありがとう。 – Cameron

15

投稿を照会するSQLを変更するには、フィルターを設定してvaraibleを照会することができます。あなたは、その後、あなたが(いくつでも)query_posts('comment_count=0');を呼び出すことができます

function filter_comment_count($sql){ 
    global $wpdb; 
    $comment_count = get_query_var('comment_count'); 

    if(is_numeric($comment_count)) 
     $sql .= $wpdb->prepare(" AND {$wpdb->posts}.comment_count = %d ", $comment_count); 

    return $sql; 
} 

あなたのテーマのfunctions.phpファイルにこれを追加し、あなただけの事前フィルターを追加したいと思う、

add_filter('posts_where', 'filter_comment_count' ); 

そして、あなたが電話をかける後フィルタを削除することもできます。

remove_filter('posts_where', 'filter_comment_count'); 
+1

これは恐らく受け入れられた答えより良い解決策です。 – anu

+0

ええ、何ができますか?ありがとう:) – postpostmodern

+0

これは良い解決策です – Yalamber

0

ような単純な:私はSQLと生PHPでいくつかの経験をしたので、私はそれのまわりで私の頭を取得することができると思い

query_posts(array ('post_type' => 'yourposttype', 'posts_per_page' => 10, 'comment_count' => 0,)); 
関連する問題