Template structure

时间:2018-07-29 作者:Edmund Chan

关于模板结构的问题:

在自定义循环中,我插入了一个get\\u template\\u部分(“resources”,“layout”),其中包含以下标记:

<div class="custom-content">
    <?php if ( get_post_type() === \'videos\' ) { ?>
        <div class="video-popup">
            <?php the_field(\'video_popup\'); ?>
        </div>
    <?php } else { ?>
        <div class="featured-image">
            <?php the_post_thumbnail(\'full\'); ?>
            <?php if ( get_post_type() === \'articles\' ) { ?>
                <p class="custom-content-btn">
                    <a href="<?php the_field( \'article_link\' )?>" class="btn btn-primary" target="_blank"><?php echo __(\'READ\'); ?></a>
                </p>
            <?php } ?> 
        </div>
        <?php if ( get_post_type() === \'audio\' ) { ?>
        <div class="audio-content">
            <?php the_field(\'audio_clip\'); ?>
        </div>
        <?php } ?>
    <?php } ?>
</div>
我有3个CPT(视频、音频和文章)。然而,我不确定这是否是有条件地显示内容的最佳方式;看起来有点乱。我想棘手的部分是,所有CPT都会出现一些标记,它们位于条件标记之间。

解决这一问题的“最佳实践”是什么?感谢您的任何意见!

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

您说过您处于一个自定义循环中,该循环返回各种post\\u类型:

//.....
 while ( $loop->have_posts() ) : $loop->the_post(); 
   get_template_part($post->post_type,\'layout\');
endwhile;
通过这种方式,您不需要使用额外的条件,并且依赖于get\\u template\\u part(),您只需要不同的文件post_type1-layout.php , post_type2-layout.php, 等在主题/子主题的根文件夹中,保持模板独立、更干净和更可用。

还可以将模板文件放在子文件夹中customTemplates 和使用

get_template_part(\'customTemplates/\'.$post->post_type,\'layout\');

SO网友:Pim

没有最佳实践,但如果您查看Wordpress默认主题,它们会根据自定义帖子类型加载不同的模板部分,因此if( get_post_type() === \'videos\' ) 等将放置在循环所在的文件中,并根据该文件加载不同的分部。

结束