使用QUERY_POST()函数列出类别中的所有帖子

时间:2012-12-20 作者:midCat

我是一个C programmer, 对…知之甚少PHP. 我用wordpress建立了一个博客。

昨天,我尝试创建页面www.abc.com/server, 此页面将列出属于server 类别

我在wordpress文档和Google中找到了一些有用的信息

我创建了如下模板:

<?php
 /*
  * Template name: list_catetory
  */
?>

<?php get_header(); ?>
    ...
    <?php 
    query_posts( \'cat_name = $pagename\' );
    if(have_posts()) : while(have_posts()) : the_post(); ?>
    <div class="post-list"  id="post-<?php the_ID(); ?>">
        <h2>
             <a href="<?php the_permalink() ?>" title=""><?php the_title(); ?></a>
             ....
        </h2>
     </div>

     <?php endwhile; ?>
     <?php wp_reset_query(); ?>
     ...
<?php get_footer(); ?>
我创建了一个名为server 使用此模板。

然后我打开这个页面,我发现这个页面列出了所有帖子。

为什么它列出所有帖子,而不仅仅列出帖子所属的server 类别

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

这里有两个问题:

使用query_posts()未定义$pagename 变量我假设您要使用page slug 作为在查询参数数组中传递给类别参数的字符串?你可以通过$post->post_name, 像这样:

global $post;
$page_slug = $post->post_name;
然后,要将其作为查询参数传递,可以将其作为\'category_name\'.

最后,您要输出一个自定义查询,via WP_Query(), 而不是打电话query_posts():

// Globalize $post
global $post;
// Custom query args array
$category_query_args = array(
    \'category_name\' => $post->post_name
);
// Instantiate category query
$category_query = new WP_Query( $category_query_args );
然后,您可以循环执行自定义查询,如下所示:

// Open category query loop
if ( $category_query->have_posts() ) : while ( $category_query->have_posts() ) : $category_query->the_post();
    ?>

    <div class="post-list"  id="post-<?php the_ID(); ?>">
        <h2>
             <a href="<?php the_permalink() ?>" title=""><?php the_title(); ?></a>
             ....
        </h2>
     </div>

    <?php
// Close category query loop
endwhile; endif;
// Reset $post data
wp_reset_postdata();

结束

相关推荐

Match two posts in categories

我有博客帖子,每一篇都有三个或三个以上的类别。问题是我需要搜索相关帖子,我必须匹配至少两个类别,即必须有两个常见类别。我正在使用此查询: $args = wp_parse_args($args, array( \'showposts\' => 10, \'post__not_in\' => array($post_id), \'ignore_sticky_posts\' => 1, \'category__in\' =&