WP - 按类别获取帖子?

时间:2012-08-10 21:10:15

标签: php wordpress

我在我的页面模板中使用此功能来获取其类别的帖子:

<?php 
        if (is_page(19)){
            ?>
            <ul>
            <?php
                global $post;
                $args = array( 'category' => 'Testimonial' );
                $myposts = get_posts( $args );
                foreach( $myposts as $post ) :  setup_postdata($post); ?>
                    <li class="testimonial"><?php the_content(); ?></li><br/>
                <?php endforeach; ?>
            </ul>
        <?php } ?>

但它正在检索所有帖子。不只是那些标有推荐信的人。知道我做错了吗?

6 个答案:

答案 0 :(得分:22)

'category_name'=&gt;'此猫'也有效,但未在WP文档中打印

答案 1 :(得分:15)

点击此处:http://codex.wordpress.org/Template_Tags/get_posts

  

注意:category参数必须是类别的ID,和   不是类别名称。

答案 2 :(得分:2)

使用WP_Query,

/* Server parameters */
if (empty($dbserver)) $dbserver = 'localhost';
$cfg['Servers'][$i]['host'] = $dbserver;

if (!empty($dbport) || $dbserver != 'localhost') {
    $cfg['Servers'][$i]['connect_type'] = 'tcp';
    $cfg['Servers'][$i]['port'] = $dbport;
}

供参考,see here

答案 3 :(得分:1)

您可以使用&#39; category_name&#39;在参数中。 http://codex.wordpress.org/Template_Tags/get_posts

  

注意:category_name参数必须是字符串,在本例中为类别名称。

答案 4 :(得分:1)

add_shortcode( 'seriesposts', 'series_posts' );

function series_posts( $atts )
{ ob_start();

$myseriesoption = get_option( '_myseries', null );

$type = $myseriesoption;
$args=array(  'post_type' => $type,  'post_status' => 'publish',  'posts_per_page' => 5,  'caller_get_posts'=> 1);
$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
echo '<ul>'; 
while ($my_query->have_posts()) : $my_query->the_post();
echo '<li><a href="';
echo the_permalink();
echo '">';
echo the_title();
echo '</a></li>'; 
endwhile;
echo '</ul>'; 
}
wp_reset_query();




return ob_get_clean(); }

//这将生成一个短代码函数,用于您的网站[seriesposts]

答案 5 :(得分:0)

创建分类字段类别(字段名称= post_category)并将其导入模板,如下所示:

<?php
          $categ = get_field('post_category');  
          $args = array( 'posts_per_page' => 6,
         'category_name' => $categ->slug );
          $myposts = get_posts( $args );
          foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
            //your code here
          <?php endforeach; 
          wp_reset_postdata();?>