-1

I have a code that returns all the tags for the article. But that is not what I want, I only want to return the author name as the tag.

<?php the_tags() ?></span> <br />

This will return all the tags that are assigned to the article. What would i have to do so that it only returns the author name?

Default code which returns all the TAGS in a post including the author's name.

<?php 
    $post_id = get_the_ID();
    $queried_post = get_post($post_id);
    $user_info = get_userdata($post->the_author);
    $first = $user_info->last_name;         
    $last = $user_info->last_name;  
    wp_set_post_tags( $post_id, $first, true );     
    if ( has_tag('$first-$last') ) { $author_tag = get_term_by( 'slug', '$first-$last', 'post_tag' ); 
    echo esc_html( $author_tag->name ); }       
?>
  • Are you actually setting up the author as a separate tag? WP automatically stores an author for each post, which you can access with the_author(). – WebElaine May 8 '19 at 15:31
  • You should use get_the_author() function. – nmr May 8 '19 at 15:31
  • I have author's name as tag (separate tag). It is linking to /tag/AuthorName. where would i insert the_author() in my code? – rocketsin6 May 8 '19 at 15:33
  • the_author would return their name but it would link to /author/AuthorName which is not what I want. – rocketsin6 May 8 '19 at 15:35
  • Can you somehow distinguish the author's tag from the others, e.g. after the prefix? – nmr May 8 '19 at 15:43
0

Your code with changes:

<?php 
    $post_id = get_the_ID();
    $queried_post = get_post($post_id);
    $user_info = get_userdata($post->post_author);  // <-- or: $user_info = get_the_author_meta('ID')
    $first = $user_info->first_name;   // what if it is empty or contains forbidden characters?
    $last = $user_info->last_name;    // as obove
    wp_set_post_tags( $post_id, $first, true );   // <-- tag slug, used in the code below

    // --- display tag ---
    if ( has_tag("$first") )
    {
        $author_tag = get_term_by( 'slug', "$first", 'post_tag' ); 
        if ( $author_tag instanceof WP_term )
        {
            $a_name = $author_tag->name;
            $a_link = get_term_link( $author_tag->term_id );
            // display tag
            echo '<a href="' . esc_url( $a_link ) . '" rel="tag">' . $a_name . '</a> ';
        }
    }

?>

Personally, I would move the code adding the tag to action hook save_post_{post_type} and execute when $update parameter is FALSE (a new post was created).

add_action( 'save_post_post', 'se337414_add_author_tag', 20, 3 );
function se337414_add_author_tag( $post_id, $post, $update )
{
    // create tag only when post is created
    if ( $update == true )
        return;

    $user_info = get_userdata( $post->post_author ); 
    $tag_parts = [];
    if ( !empty($user_info->first_name) )
        $tag_parts[] = $user_info->first_name;
    if ( !empty($user_info->last_name) )
        $tag_parts[] = $user_info->last_name;

    $tag_slug = implode( '-', $tag_parts );
    if ( empty($tag_slug) )
        return;

    wp_set_post_tags( $post_id, $tag_slug, true );
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.