我是一个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
类别
最合适的回答,由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();