get_template_part-WordPress无法正常工作

时间:2020-11-12 21:19:34

标签: php wordpress

我正在尝试将about页面的内容放在标题的div内,模板部分位于文件夹template-parts / content-about.php中

标题上的代码是:

<div id="slideOut"> 
<div class="slideout-content">

    
    <?php
    while ( have_posts() ) :
        the_post();

        get_template_part( 'template-parts/content', 'about' );

    endwhile; // End of the loop.
    ?>
    
      <?php include 'content-about.php'; ?>
</div><!-- .slideout-content -->
</div>  

content-about.php看起来像这样:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="entry-content">
    <?php
    the_content();

    wp_link_pages(
        array(
            'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'about' ),
            'after'  => '</div>',
        )
    );
    ?>
</div><!-- .entry-content -->
</article><!-- #post-<?php the_ID(); ?> -->

问题是在div上显示与当前页面相同的内容,例如,如果我位于主页上,则它应始终显示div的内容时仅在div内显示主页的内容。关于页面。 为什么不工作? 谢谢

2 个答案:

答案 0 :(得分:1)

get_template_part()正常工作。您的content-about.php通常包含在内。

但是,由于您正在呼叫the_content(),因此它会打印当前帖子/页面的内容。

您可以将the_content()替换为get_the_content(),并将about页面的帖子ID作为第三个参数传递。

请注意:

the_content()的一个重要区别是get_the_content()不会通过the_content过滤器传递内容。这意味着get_the_content()不会自动嵌入视频或扩展短代码。

因此,您可能想像这样使用apply_filters()

<?php
echo apply_filters( 'the_content', get_the_content( null, false, $about_page_id ) );
// where $about_page_id is the post id of your about page

答案 1 :(得分:1)

如果您不需要,甚至不需要get_template_part

您可以这样做:

<div id="slideOut"> 
    <div class="slideout-content">
        <?php echo get_the_content('','','your-about-page-id-here'); ?>
    </div><!-- .slideout-content -->
</div>  

get_template_part()是一种包含带有标记的文件的方法,该标记可能依赖于循环,但要使内容分开。您在这里不一定需要它。

您还可以使用: echo get_post_field('post_content', your-post-id-here );