Как получить URL категории из get_the_category?

7 мар. 2016 г., 13:30:41
Просмотры: 36.8K
Голосов: 5

Мой цикл ниже показывает последние 4 записи из той же категории, что и просматриваемая в данный момент запись. Он находится внутри single.php.

Я пытаюсь получить URL этой же категории, чтобы сделать ссылку обратно на category.php для просмотра всех записей из этой категории. Я думал, что получение slug категории сработает, но мой код ниже ничего не выводит:

<?php
global $post;
$categories = get_the_category();

    foreach ($categories as $category) :

       $exclude = get_the_ID();
       $posts = get_posts('posts_per_page=4&category='. $category->term_id);

        foreach($posts as $post) :
         if( $exclude != get_the_ID() ) { ?>

                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="post c-1">Ссылка на актуальную запись</a>

    <?php } endforeach; ?>

<a href="<?php bloginfo('url'); ?>/categories/<?php echo $childcat->cat_slug; ?>" title="Просмотреть все" class="btn border"><i class="i-right-double-arrow"></i> Просмотреть все <?php echo $childcat->cat_slug; ?></a>
<?php  endforeach; wp_reset_postdata(); ?>
1
Комментарии

Это и это действительно помогло разобраться в вопросе.

lowtechsun lowtechsun
15 июн. 2017 г. 11:53:40
Все ответы на вопрос 2
0

Используйте:

get_category_link( $category_id );

Смотрите:

https://codex.wordpress.org/Function_Reference/get_category_link

В вашем конкретном случае:

<?php
global $post;
$categories = get_the_category();

    foreach ($categories as $category) :

       $exclude = get_the_ID();
       $posts = get_posts('posts_per_page=4&category='. $category->term_id);

        foreach($posts as $post) :
         if( $exclude != get_the_ID() ) { ?>

                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="post c-1"> Ссылка на текущую запись</a>

    <?php } endforeach; ?>

<a href="<?php echo esc_url( get_category_link( $category->term_id ) ); ?>" title="Просмотреть все" class="btn border"><i class="i-right-double-arrow"></i> Просмотреть все <?php echo $category->name; ?></a>
<?php  endforeach; wp_reset_postdata(); ?>
7 мар. 2016 г. 13:33:28
2

ПРОСТОЙ И ЧИСТЫЙ КОД

Я новичок :)

Я модифицировал код, предоставленный Адамом, и убрал ненужные части, которые не требовались для ответа на исходный вопрос.

У меня это сработало на 100%.

Попробуйте сами.

Пожалуйста, дайте мне знать, если у вас тоже получилось :)

<?php $categories = get_the_category();
foreach ($categories as $category) :
endforeach; ?>

<a href="<?php echo esc_url( get_category_link( $category->term_id ) ); ?>">
  ССЫЛКА НА ТЕКУЩУЮ КАТЕГОРИЮ ЗАПИСИ >>
</a>

ИЛИ

<?php $categories = get_the_category();
foreach ($categories as $category) : ?>

Категория:
<a href="<?php echo esc_url( get_category_link( $category->term_id ) ); ?>">
  <?php echo $category->name; ?>
</a>

<?php endforeach; ?>

КОМБИНИРУЙТЕ С ДРУГИМИ ЭЛЕМЕНТАМИ ПО СВОЕМУ УСМОТРЕНИЮ. ЭКСПЕРИМЕНТИРУЙТЕ, ДРУЗЬЯ.

26 нояб. 2020 г. 10:29:06
Комментарии

Я не понимаю пустой цикл foreach. Как это работает? Это просто выбирает последнюю запись в $categories как $category, то есть вы показываете ссылку только для последней категории?

Rup Rup
26 нояб. 2020 г. 13:10:01

Похоже, foreach обязателен. Без него код не будет работать правильно. Вы можете использовать любое имя для переменной. Можно изменить на $category = get_the_category(); foreach ($category as $category) : Надеюсь, это поможет. Не забывайте, я новичок. Просто экспериментирую. Если вы заметили, я удалил одну нерелевантную строку кода. Удачи.

BarryOvb BarryOvb
27 нояб. 2020 г. 12:25:40