web-dev-qa-db-fra.com

Changer le lien de l'auteur de la destination

Est-il possible de changer la destination du lien de l'auteur normal vers une page de publication ou un autre lien du site?

J'ai trouvé cette réponse mais j'avais besoin d'acheter du code php. Est-il possible de trouver un moyen plus simple de créer la page des utilisateurs dans le back-end?

function wpd_author_link( $link, $author_id, $author_nicename ){
    return 'http://my.blog.tld/';
}
add_filter( 'author_link', 'wpd_author_link', 20, 3 );

Je vous remercie.

1
Marco Romano

Pour éditer uniquement le lien associé aux auteurs, dans le fichier functions.php de votre thème:

add_filter( 'author_link', 'new_author_link', 10, 1 );

function new_author_link( $link ) {      
    $link = 'http://newlink.com/'; //set this however you wish

    return $link; //after you've set $link, return it to the filter              
}

Si vous souhaitez faire quelque chose comme définir le lien de chaque auteur vers une page wp existante du même nom ( exemple non testé ):

add_filter( 'author_link', 'new_author_link', 10, 3 );
function new_author_link( $link, $author_id, $author_nicename ) {

     $page = get_page_by_path( $author_nicename );

     if ($page) { 

         $page = $page->ID;
         $link = get_permalink( $page ); 
     }
     else {
        $link = ''; //some default value perhaps
     }
     return $link;
}

Plus de WP Codex sur Filtrage de l'auteur

Plus de WP Codex sur Filtres en général.


Pour votre exemple mis à jour:

Si vous essayez de rediriger tous les liens d'auteur vers home_url( 'link' )

add_filter( 'author_link', 'new_author_link', 10, 1 );

function new_author_link( $link ) {         
    $link = home_url( 'link' ); //set this however you wish

    return $link; //after you've set $link, return it to the filter                
}

Si vous essayez d’atteindre un autre condition si/else:

add_filter( 'author_link', 'new_author_link', 10, 1 );

function new_author_link( $link, $author_id, $author_nicename ) {         
    //send author with id one to home link
    if ($author_id == '1') {
         $link = home_url( 'link' ); //set this however you wish
    }
    //send all other authors to some other link
    else {
        $link = 'http://sitename.com/some-other-url/';
    }

    return $link; //after you've set $link, return it to the filter                
}
1
hwl

Au moment où j'ai fait de cette façon:

add_filter ('author_link', 'my_multi_author_link', 10, 2); function my_multi_author_link ($ url, $ user_id) {

if ( 1 === $user_id )
    return home_url( 'link' );

return $url;

}

add_filter ('author_link', 'my_multi_author_link_2', 10, 2); function my_multi_author_link_2 ($ url, $ user_id) {

if ( 5 === $user_id )

    return home_url( 'link' );

return $url;

}

0
Marco Romano