У меня есть простая страница, на которой я хочу отобразить список сообщений, которые еще не были прокомментированы. Как мне это сделать? Я полагаю, что это некоторые параметры, которые я могу добавить в query_posts? Благодарю.
К сожалению, query_posts не позволяет вам ограничивать запрос comment_count=0
. Вы можете сделать это:
query_posts( 'orderby=comment_count&order=ASC' );
Но это не только отображает сообщения с нулевыми комментариями, но и отображает только те, у кого есть нулевые комментарии.
Более активное (но лучшее) решение заключается в использовании пользовательского запроса, который специально ограничивает запрос сообщениями с 0 комментариями, но это означает, что вам нужно будет создать свою собственную структуру цикла (по крайней мере, насколько я могу судить )
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; ?>
Кажется ли это в ваших знаниях реализовать?
Вы можете настроить фильтр и запрос varaible для изменения SQL, который запрашивает сообщения. Добавьте это в файл functions.php
вашей темы
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; }
Затем вы можете вызвать query_posts( 'comment_count=0' );
(любое число), вы просто хотите добавить фильтр заранее,
add_filter( 'posts_where', 'filter_comment_count' );
И после того, как вы сделаете звонок, вы также захотите удалить фильтр.
remove_filter( 'posts_where', 'filter_comment_count' );
так просто как :
query_posts( array ( 'post_type' => 'yourposttype', 'posts_per_page' => 10, 'comment_count' => 0, ) );