In the docs it states that you need to pass get_tag_link()
an argument, which is the tags ID, but I need to be able to access this during the loop
.
Maybe I'm using the wrong function here. I'm trying to wrap an image with an <a>
tag that is supposed to represent the tag.
And yea, only passing it a variable ($tag_id
) isn't going to do the trick but I'm not sure how I should represent the $tag_id
to account for the loop.
Look in the start of the HTML
from the echo
, article > header
you will see an <a>
that is wrapping the the_post_thumbnail([300, 200])
.
if (have_posts()) {
while (have_posts()) {
the_post();
echo '
<article class="blog-post col-12 col-sm-8 offset-sm-2 col-md-6 offset-md-0 col-lg-4 mb-5 mb-md-0">
<header class="col-12 mb-3 text-center">
<a href="',get_tag_link($tag_id),'">',the_post_thumbnail([300, 200]),'</a>
</header>
<div class="col-12 mb-3 text-center">
<small>',the_category(' '),'</small>
</div>
<div class="col-12 mx-auto mb-3">
<h2 class="h2">
<a href="',the_permalink(),'">',the_title(),'</a>
</h2>
</div>
<div class="col-12 mx-auto mb-3">
<p class="lead">',the_excerpt(),'</p>
</div>
</article>
';
}
}
First you need to get the post's tags and then pick one (as it can have multiple tags) or just use the first one. This will throw an error if there are no tags or php version is 5.2 (see below for a safer code).
$tag_id = get_the_tags()[0]->term_id;
Here is a safer code:
$tags = get_the_tags();
if(!empty($tags)){
$tag_id = $tags[0]->term_id
}
There are a number of errors in your code.
the_post_thumbnail()
will print directly to the page. Since you are echoing you should use get_the_post_thumbnail()
.the_excerpt()
and the_permalink()
(get_)the_post_thumbnail()
should not be in brackets - ie, just (300,200)
.
not a ,
Finally, to answer your question, use get_the_tags()
. If you use it in the loop you don't need to pass $tag_id to it. It will return an array, so you will then need to get the id from the first key and pass that to get_tag_link()
to get it's URL, eg:
$theTags = get_the_tags(); $firstTagURL = get_tag_link( $theTags[0]->term_id );
Hope that helps