Как получить URL категории из get_the_category?
Мой цикл ниже показывает последние 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(); ?>
Используйте:
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(); ?>

ПРОСТОЙ И ЧИСТЫЙ КОД
Я новичок :)
Я модифицировал код, предоставленный Адамом, и убрал ненужные части, которые не требовались для ответа на исходный вопрос.
У меня это сработало на 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; ?>
КОМБИНИРУЙТЕ С ДРУГИМИ ЭЛЕМЕНТАМИ ПО СВОЕМУ УСМОТРЕНИЮ. ЭКСПЕРИМЕНТИРУЙТЕ, ДРУЗЬЯ.

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

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