Вставить контент после первого сообщения в цикле WordPress - PullRequest
0 голосов
/ 15 января 2020

Я хочу отобразить список категорий после первого сообщения в L oop индекса. php (это шаблон, используемый моей темой WP для отображения сообщений).

Я искал в Интернете и нашел некоторый код (см. Ниже), который должен работать так, как я хочу - добавить список заголовков категорий в виде ссылок между списком сообщений в L oop.

Однако он не работает должным образом. Отображается только одно название категории, но не все. Интересно, что он отображает заголовок категории первого сообщения (сообщение, которое предшествует пользовательскому коду), но не содержит других.

Мой код L oop, включая вставленный пользователем пользовательский код, выглядит следующим образом:

<?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; ?>  

Надеясь, что кто-то может помочь.

Спасибо,

Меконг

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Попробуйте этот код, небольшие изменения в вашем коде ...

 <?php if (have_posts()) : $i = 1; while (have_posts()) : the_post(); ?>

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

<div class="categories">

<?php 
if( $i == 1){

    $categories = get_categories( array(
        'orderby' => 'name',
        'parent'  => 0
    ) );

    foreach ( $categories as $category ) {
        printf( '<a href="%1$s">%2$s</a><br />',
            esc_url( get_category_link( $category->term_id ) ),
            esc_html( $category->name )
        );
    }
}
?>

</div>


<?php $i++; endwhile; ?>  
0 голосов
/ 15 января 2020

Мне немного неясно ваш вопрос, но, похоже, вы хотите список всех категорий, верно? Я думаю, что строка "$ Categories = get_the_category ();" получает категории только для текущей (в данном случае первой) записи.

Если вы хотите получить список всех категорий, которые существуют в вашем блоге / на сайте, попробуйте 'get_categories', https://developer.wordpress.org/reference/functions/get_categories/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...