Replace author url with different one (wordpress)

There are 3 authors in our company blog, each author has own site url in profile settings:

Mike - http://mike.com
Gelens - http://gelens.com
Admin - http://site.com/company/

the links for profiles are:

Read More
http://site.com/author/Mike/
http://site.com/author/Gelens/
http://site.com/author/Admin/

I need to replace a link to Admin’s page, so, if there is <?php the_author_posts_link(); ?> tag on some page, and the author is Admin, the link must be http://site.com/company/ instead of http://site.com/author/Admin/.

How can I do that?

Related posts

Leave a Reply

5 comments

  1. It looks like the the_author_posts_link function just calls get_author_posts_url to get the link, which passes the link through the author_link filter before returning it. In your theme’s functions.php, you could add something like this (untested):

    add_filter( 'author_link', 'admin_author_link', 10, 3);
    function admin_author_link($link, $author_id, $author_nicename) {
        if( $author_id==1 ) {
            $link = 'http://site.com/company/';
        }
        return $link;
    }
  2. I think the least heartburn would be wordpress > the_author_meta.

    Have each user add their url in the wordpress user profile, as you have done. Then in your theme’s functions.php use the_author_meta('user_url'). Remember this will echo the url. To use it as a variable use get_the_author_meta('user_url').

    Here is how we did it with the twenty ten theme, this is in functions.php

    function twentyten_posted_on() {
    printf( __( '<span class="%1$s">Posted on</span> %2$s <span class="meta-sep">by</span> %3$s', 'twentyten' ),
        'meta-prep meta-prep-author',
        sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><span class="entry-date">%3$s</span></a>',
            get_permalink(),
            esc_attr( get_the_time() ),
            get_the_date()
        ),
        sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s">%3$s</a></span>',
            get_the_author_meta('user_url'), //changed from get_author_posts_url( get_the_author_meta( 'ID' ) ),
            sprintf( esc_attr__( 'About %s', 'twentyten' ), get_the_author() ),
            get_the_author()
        )
    );
    }
    
  3. I also needed author URL to a different page.

    My site is on WordPress and I use oxygen.

    I went to my blog page template where I entered the author which is selected dynamically.
    there is an option to link the author’s name to the archive page or the author’s website.

    I selected the author’s website. Then went to the users on WordPress and went to the authors and added the page I wanted to actually go to as their website.