Home > Enterprise >  How can I echo   inside html markup in php?
How can I echo   inside html markup in php?

Time:10-31

I'm trying to call a list of tags in my wordpress single posts template and give each tag both a common and a unique css class.

I can successfully add a unique class "post-tags-(tag name here)" with following code:

<?php
$post_tags = get_the_tags();

if ( $post_tags ) {
    foreach($post_tags as $tag) {
        echo "<span class=post&#45;tags&#45;$tag->name>$tag->name</span>";
    }
}
?>

However I would need to add another common class called "post-tags" and I can't find a way to add space between the tags.

<?php
$post_tags = get_the_tags();

if ( $post_tags ) {
    foreach($post_tags as $tag) {
        echo "<span class=post&#45;tags&nbsp;post&#45;tags&#45;$tag->name>$tag->name</span>";
    }
}
?>

The &nbsp; I have added breaks the code. It simply returns

<span class="post-tags&nbsp;post-tags-tag3">tag3</span>

CodePudding user response:

Try this

$post_tags = get_the_tags();

if ( $post_tags ) {
    foreach($post_tags as $tag) { ?>

<span class="post-tags post-tags-<?php echo $tag->name; ?>"><?php echo $tag->name; ?></span>

<?php
  }
}
?>

And if we use a tag for some css class, it's better to use $tag->slug; or $tag->term_id; rather than $tag->name;

CodePudding user response:

I got this answer from a friend and it fixed the problem

echo "<span class=\"post-tags post-tags-$tag->name\">$tag->name</span>";

Basically you need to escape the apostrophes

  • Related