无法在WordPress循环中按类别查询帖子

时间:2013-07-25 18:08:35

标签: php wordpress

正如标题所说,当我尝试查询我的帖子以显示哪些帖子属于哪个类别时它只显示所有帖子,看看我是否在代码或循环中犯了错误我试图搜索堡垒标签而不是这工作

<section class="background-wrapper">
<section class="content">
<div class="heading"><h1>Posts tagged with "coding"..</h1></div>
<div class="module-wrapper">

<?php if (have_posts()): ?>
<?php query_posts('cat=design');//NOTE USING ('tag=css') WORKED ?>

<?php while (have_posts()) : the_post(); ?>
<?php wpb_set_post_views(get_the_ID()); //storing a value of a page view ?>

  <div class="module">
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

    <!-- Post Title -->
    <h1 class="post-title">
      <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </h1>
    <!-- /Post Title -->

    <?php html5wp_excerpt('html5wp_index'); // Build your custom callback length in functions.php ?>

查询代码时代码是否需要不同?

2 个答案:

答案 0 :(得分:0)

如果您使用的是正在使用query_posts('cat=###')的查询,那么您需要为查询提供类别ID 而不是名称。 如果您不知道Id,请在查询之前找到它:

$categories = get_the_category(); //gets all the categories
$i=1; 
$name='design'; 
$id='';
while(count($categories) > i){   //Loops through the categories
    if(($categories[$i-1]->cat_name)==$name){ 
        $id=$categories[$i-1]->cat_ID;  //Sets the variable $id to be the id you need
    }
    i++; 
};

$id应该是您正在使用的查询所需的类别ID。

答案 1 :(得分:0)

查询帖子几乎总是一个坏主意,但这超出了您的问题的范围。但是,如果我理解你的问题,我昨天偶然发现了在建立你的论点时查询类别和标签的可能答案:

//category and tag intersection
'category__and' => 'category', 'tag__in' => 'post_tag',

以下是我使用WP_Query查询的默认模板,以防你想与之交换。

$args  = array(
    'posts_per_page'  => -1, //-1 shows all
    //'offset'          => 0,
    'category'        => 'design',
    'orderby'         => 'post_date',
    'order'           => 'DESC',
    //'include'         => ,
    //'exclude'         => ,
    //'meta_key'        => ,
    //'meta_value'      => ,
    'post_type'       => 'post',
    //'post_mime_type'  => ,
    //'post_parent'     => ,
    'post_status'     => 'publish',
    'suppress_filters' => true
);
$query = new WP_Query( $args );
if ( $query -> have_posts()) {
    while ( $query -> have_posts() ) : $query->the_post();  {
    //do stuff with the query data returned here
    }
}