在页面模板中按类别获取自定义帖子类型

时间:2011-07-16 00:28:30

标签: php wordpress wordpress-theming

我创建了一个包含类别和子类别的自定义帖子类型,我需要做的是列出页面模板中给定子类别或类别的帖子标题和图片。

我已经获得了自定义帖子类型中所有列出的项目,但我不确定如何进一步...任何帮助表示赞赏。

<?php 
$args = array( 'post_type' => 'portfolio', 'posts_per_page' => 10 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
the_title();
echo '<div class="entry-content">';
the_content();
echo '</div>';
endwhile;
?>

2 个答案:

答案 0 :(得分:9)

我认为下面的代码可能无效,因为它使用了一个弃用的参数(我认为 caller_get_posts在3.1中已弃用)

认为以下内容应该解决问题:

$loop = new WP_Query( array( 
    'post_type' => 'portfolio', 
    'cat' => 5, // Whatever the category ID is for your aerial category
    'posts_per_page' => 10,
    'orderby' => 'date', // Purely optional - just for some ordering
    'order' => 'DESC' // Ditto
) );

while ( $loop->have_posts() ) : $loop->the_post(); ?>

还要考虑几件事情(抱歉,如果这会进入'明显'领域!):

1)您的自定义帖子类型是注册使用内置类别还是它正在使用的自定义分类?如果前者然后上面应该工作,如果是后者那么你需要使用'your-taxonomy-name'=&gt;'your-taxonomy-term'来代替cat =&gt; 5参数

http://codex.wordpress.org/Class_Reference/WP_Query#Parameters

2)页面上是否还有其他循环?如果是这样,他们将需要

<?php wp_reset_query(); ?>

之后,以便后续循环正常工作

http://codex.wordpress.org/Function_Reference/wp_reset_query

答案 1 :(得分:2)

这应该有效:

$cat_id = get_cat_ID('My Category'); //the categories name
$args=array(
  'cat' => $cat_id,
  'post_type' => 'portfolio',
  'post_status' => 'publish',
  'posts_per_page' => -1,
  'caller_get_posts'=> 1
);
$new = new WP_Query($args);