Я C programmer
на C programmer
, мало знаю о PHP
. Я создал блог с wordpress.
Yestoday, я пытаюсь создать страницу 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
Здесь есть два вопроса:
query_posts()
$pagename
Я предполагаю, что вы хотите использовать slug страницы в качестве строки, переданной для параметра категории в массиве аргументов запроса? Вы можете получить это через $post->post_name
, например:
global $post; $page_slug = $post->post_name;
Затем, чтобы передать это как параметр запроса, вы передадите его как 'category_name'
.
Наконец, вы хотите вывести пользовательский запрос через 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();