首先,这是我的第一个WP项目,我在学习的过程中。。。我知道这可能是一件很容易实现的事情,但由于某种原因,我很难让它发挥作用。。。所以,如果这是一个noob问题,我很抱歉。。。
但我正在创建一个社交网站,它有类似于推特的不同类型的帖子。我有5种自定义帖子类型,用于评论/状态更新/“推特”、图片帖子、网络链接帖子、博客帖子和视频帖子。
我创建了single-[帖子类型]。php文件,但这显然只是改变了它们在单个页面上的输出方式,并没有改变主循环中的HTML标记。
所以我一直在尝试在主循环中使用其他一些if语句。。。所以“If post type=“comment”。。。然后输出此HTML“.”否则,如果post type=“link”,则使用此HTML“。。。
我试过几种方法。。。这是最近的一次。这是我当前的主要WP循环代码;
<?php if ( $query2->have_posts() ) : ?>
<?php while ( $query2->have_posts() ) : $query2->the_post();?>
<?php $postType = get_post_type_object(get_post_type()); ?>
<?php if (is_singular( \'comment\' )) : ?>
<h2> Custom Post Type Here </h2>
<?php else : ?>
<article class ="post">
<a href="<?php the_permalink(); ?>">
<h3><?php the_title() ?></h3>
<a href="<?php the_permalink(); ?>">
<p class="meta">posted a blog on 24th May 2019 at 22:17</p>
<p><?php the_content(); ?></p>
</article>
</a>
<hr>
<?php endif; ?>
<?php endwhile; ?>
<?php else : ?>
<?php echo "Error: 404"; ?>
<?php endif ?>
请有更多经验的人告诉我正确的方法好吗?
----编辑-----
破解了它。需要访问WP\\u Post\\u类型对象的“name”属性。所有需要的人都可以使用完整的代码。
<?php if ( $query2->have_posts() ) : ?>
<?php while ( $query2->have_posts() ) : $query2->the_post();?>
<?php $postType = get_post_type_object(get_post_type()); ?>
<?php if ($postType->name == \'al-comment\' ) : ?>
<article class = "comment">
<h2> Comment type </h2><br/>
</article>
<?php elseif ($postType->name == \'al-blog\' ) : ?>
<article class = "blog">
<h2> Blog type </h2><br/>
</article>
<?php elseif ($postType->name == \'al-link\' ) : ?>
<article class = "link">
<h2> Link type </h2><br/>
</article>
<?php elseif ($postType->name == \'al-ytvid\' ) : ?>
<article class = "ytvid">
<h2> YouTube Video type </h2><br/>
</article>
<?php else : ?>
Standard post type <br/>
<?php endif; ?>
<?php endwhile; ?>
<?php else : ?>
<?php echo "Error: 404"; ?>
<?php endif ?>
<?php wp_reset_postdata(); ?>