0

我无法让它显示来自名为“资源”的自定义帖子类型的帖子。有什么帮助吗?

<?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 : ?>
4

1 回答 1

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,这是一种渲染机制,应该在适当的主题文件中。

于 2013-04-26T02:13:38.010 回答