为什么我的wordpress查询不起作用?自定义帖子类型

时间:2013-04-25 19:37:47

标签: wordpress custom-post-type

我无法通过我的自定义帖子类型“资源”显示帖子。有什么帮助吗?

<?php 
    add_action( 'pre_get_posts', 'add_custom_post_type_to_query' );
    function add_custom_post_type_to_query( $query ) {
        if ( is_home() && $query->is_main_query() )
            $query->set( 'post_type', array( 'post', 'page', 'resources' ) );
        return $query;
    }
?>

<?php if ( have_posts() ) : ?>
    <?php /* Start the Loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <?php the_title(); ?>
        <?php the_content(); ?>
        <?php get_template_part( 'content', get_post_format() ); ?>
    <?php endwhile; ?>
    <?php twentytwelve_content_nav( 'nav-below' ); ?>
<?php else : ?>

1 个答案:

答案 0 :(得分:0)

这部分应该进入functions.php:

<?php 
    add_action( 'pre_get_posts', 'add_custom_post_type_to_query' );
    function add_custom_post_type_to_query( $query ) {
        if ( is_home() && $query->is_main_query() )
            $query->set( 'post_type', array( 'post', 'page', 'resources' ) );
        return $query;
    }
?>

此部分位于模板文件中:

<?php if ( have_posts() ) : ?>
    <?php /* Start the Loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <?php the_title(); ?>
        <?php the_content(); ?>
        <?php get_template_part( 'content', get_post_format() ); ?>
    <?php endwhile; ?>
    <?php twentytwelve_content_nav( 'nav-below' ); ?>
<?php else : ?>

说明:

第一部分是在pre_get_posts()上激活过滤器/操作。但是当你把它放在主题文件或模板文件中时,过滤器会发射得太晚或者根本不会发射。

主题中的functions.php文件是第一个要解析的文件,因此它应该包含与页面呈现或可视化无直接关系的所有函数。

然而,loop是一种渲染机制,应该在相应的主题文件中。