WordPress,根据帖子类别更改模板布局?

时间:2018-01-08 13:58:23

标签: php wordpress custom-post-type categories alternate

我正在尝试在列表中的页面上输出自定义帖子类型“哲学”下的所有帖子。在类别“img-left”和“img-right”之间交替。

我可以让帖子显示所有“哲学”帖子,但是我想根据自定义类别在两个布局中布置帖子。

如果类别是“img-right”,我希望帖子显示左侧的文字和右侧的图像,反之亦然“img-left”。

我尝试过以下代码,但根本不起作用。

<?php
        $args = array( 'post_type' => 'philosophy', 'posts_per_page' => 10 );
        $loop = new WP_Query( $args );
    if( in_category( 'img-right' ) ):
        while ( $loop->have_posts() ) : $loop->the_post();
        echo '<div class="col-md-12"><h2>';
        the_title();
        echo '</h2></div><div class="row content"><div class="col-md-6"';
        the_content();
        echo '</div><div class="col-md-5 offset-1 float-right">';
        the_post_thumbnail('array(100,100)');
        echo '</div></div>';



        endwhile;
    endif;
        ?>

删除“if”和“endif”我有代码列出一个布局中的所有帖子。我需要的是可以根据帖子的类别输出“img-right”和“img-left”布局的条件。我上面示例中显示的唯一布局是“img-right”。

非常感谢任何帮助。这个PHP让我头晕目眩!

2 个答案:

答案 0 :(得分:2)

所以...在回答的人的帮助下,我用@Mohsin触及的CSS方法想出来了。

这是我的代码:

<div id="content" class="col-12" role="main">
    <?php get_template_part('loops/page-content'); ?>
    </div>

    <div class="row">
        <?php
        $args = array( 'post_type' => 'philosophy', 'posts_per_page' => 10 );
        $loop = new WP_Query( $args );
        while ( $loop->have_posts() ) : $loop->the_post();
        echo '<div class="row content"><div class="col-md-12"><h2>';
        the_title();
        echo '</div><div class="col-md-6">';
        the_content();
        echo '</div><div class="col-md-6">';
        the_post_thumbnail();
        echo '</div></div>';



        endwhile;
        ?>

然后我应用了这个:

.row.content:nth-child(even) {
    flex-direction: row-reverse;
}

我们是金色的。

感谢所有帮助过的人。

答案 1 :(得分:0)

如果我理解正确:

<?php $args = array( 'post_type' => 'philosophy', 'posts_per_page' => 10 ); ?>
<?php $loop = new WP_Query( $args ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

    <div class="col-md-12"><h2>
        <?php the_title(); ?>
    </h2></div>
    <div class="row content">

        <?php if( in_category( 'img-left' ) ): ?>
            <div class="col-md-5 offset-1 float-left">
                <?php the_post_thumbnail('array(100,100)'); ?>
            </div>
        <?php endif; ?>

        <div class="col-md-6">
            <?php the_content(); ?>
        </div>

        <?php if( in_category( 'img-right' ) ): ?>
            <div class="col-md-5 offset-1 float-right">
                <?php the_post_thumbnail('array(100,100)'); ?>
            </div>
        <?php endif; ?>
    </div>

<?php endwhile; ?>

上面的代码会输出所有帖子,如果是img-left类别,则会在左侧显示缩略图;如果在img-right中,则会在右侧显示缩略图(如果将其归类为两者,则输出两者如果它既不是类别也不会。你可能想要不同的行为,但调整条件应该很简单。)

如果您的模板变得更复杂,我建议您使用get_sidebar()等功能将部分移到模板部件/。