在 WordPress 循环中的第一篇文章后插入内容

我想在 index.php 循环中的第一个帖子之后显示一个类别列表(这是我的 WP 主题用来显示帖子的模板)。


我在网上四处搜索,发现了一些代码(见下文),它应该按照我的意愿进行 - 注入一个类别标题列表作为循环中帖子列表之间的链接。


但是,它没有按预期工作。它只显示一个类别标题,而不是全部。有趣的是,它显示第一个帖子类别的标题(自定义代码之前的帖子),但没有其他内容。


我的 Loop 代码,包括我插入的自定义代码,如下:


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


<?php get_template_part('content'); ?>


// START CUSTOM CODE


<div>


<?php 

if( $wp_query->current_post == 0 ) { 

  $categories = get_the_category();

  $separator = ' ';

  $output = '';

  if($categories){

    foreach($categories as $category) {

        $output .= '<a href="'.get_category_link( $category ).'" title="' . esc_attr( sprintf( __( "View all posts in %s" ), $category->name ) ) . '">'.$category->cat_name.'</a>'.$separator;

    }

    echo trim($output, $separator);

  }


?>


</div>


// END CUSTOM CODE


<?php endwhile; ?>  

希望有人可以提供帮助。


LEATH
浏览 115回答 2
2回答

哈士奇WWW

您的问题对我来说有点不清楚,但是您似乎想要所有类别的列表,对吗?我认为“$categories = get_the_category();”这一行&nbsp;仅获取当前(在本例中为第一个)帖子的类别。如果您想要博客/网站中存在的所有类别的列表,请尝试“get_categories”,https://developer.wordpress.org/reference/functions/get_categories/

红糖糍粑

试试这个代码,对你的代码做些小改动......&nbsp;<?php if (have_posts()) : $i = 1; while (have_posts()) : the_post(); ?><?php get_template_part('content'); ?><div class="categories"><?php&nbsp;if( $i == 1){&nbsp; &nbsp; $categories = get_categories( array(&nbsp; &nbsp; &nbsp; &nbsp; 'orderby' => 'name',&nbsp; &nbsp; &nbsp; &nbsp; 'parent'&nbsp; => 0&nbsp; &nbsp; ) );&nbsp; &nbsp; foreach ( $categories as $category ) {&nbsp; &nbsp; &nbsp; &nbsp; printf( '<a href="%1$s">%2$s</a><br />',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; esc_url( get_category_link( $category->term_id ) ),&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; esc_html( $category->name )&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; }}?></div><?php $i++; endwhile; ?>&nbsp;&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP