How to call custom posts

时间:2014-08-19 作者:Claudiu Creanga

我有此自定义帖子:

add_action(\'init\', \'eveniment_register\');

function eveniment_register() {
    $args = array(
        \'label\' => __(\'Evenimente\'),
        \'singular_label\' => __(\'Eveniment\'),
        \'public\' => true,
        \'show_ui\' => true,
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'rewrite\' => true,
        \'supports\' => array( \'title\', \'editor\', \'thumbnail\', \'excerpt\', \'comments\' ),
        \'taxonomies\'    => array(\'category\',\'post_tag\',\'post_thumbnail\')

    );

    register_post_type( \'eveniment\' , $args );
}
所有这些自定义帖子都有一个类别ID=5.

在里面category-5.php 我想显示该类别中的所有自定义帖子。

我是如何在普通帖子中做到这一点的:

while (have_posts()) : the_post(); 
不适用于自定义帖子。

有什么想法吗?谢谢

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

不要更改主查询。您可以通过使用pre_get_posts.退回到类别5中的默认循环。php并将以下内容添加到函数中。php

function include_category_cpt( $query ) {
    if ( !is_admin() && $query->is_category( \'5\' ) && $query->is_main_query() ) {
        $query->set( \'post_type\', \'eveniment\' );
        $query->set( \'post_status\', \'publish\' );
        $query->set( \'posts_per_page\', \'-1\' );
        $query->set( \'ignore_sticky_posts\', \'1\' );

    }
}
add_action( \'pre_get_posts\', \'include_category_cpt\' );
另外,请注意,caller_get_posts 已长期折旧并替换为posts_per_page

参考文献

SO网友:Claudiu Creanga

我是这样解决的:

<?php
$type = \'eveniment\';
$args=array(
  \'post_type\' => $type,
  \'post_status\' => \'publish\',
  \'posts_per_page\' => -1,
  \'caller_get_posts\'=> 1);

$my_query = null;
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
  while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
    <?php
  endwhile;
}
wp_reset_query();  // Restore global post data stomped by the_post().
?>

结束

相关推荐