2009-05-15 14 views
0

Es gibt drei Autoren in unserem Unternehmens-Blog, jeder Autor url hat einen eigenen Standort in Profileinstellungen:Ersetzen Autor URL mit verschiedenen ein (Wordpress)

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

die Links für Profile sind:

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

Ich muss einen Link zu Admin-Seite ersetzen, so, wenn es <?php the_author_posts_link(); ?> Tag auf einer Seite gibt, und der Autor ist Admin, muss der Link http://site.com/company/ anstelle von http://site.com/author/Admin/ sein.

Wie kann ich das tun?

Antwort

3

Es sieht so aus, als ob die the_author_posts_link-Funktion gerade get_author_posts_url aufruft, um den Link zu erhalten, der den Link durch den author_link Filter vor der Rückgabe übergibt. In Ihrem Thema des functions.php, könnten Sie so etwas wie dieses (nicht getestet) hinzufügen:

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; 
}
0

Sie können dies mithilfe von http rewrites tun.

3

Ich denke, die am wenigsten Sodbrennen wordpress > the_author_meta wäre.

Lassen Sie jeden Benutzer seine URL im WordPress-Benutzerprofil hinzufügen, wie Sie es getan haben. Dann verwenden Sie in Ihrem Thema functions.phpthe_author_meta('user_url'). Denken Sie daran, dass dies die URL zurückgeben wird. Um es als Variable zu verwenden, verwenden Sie get_the_author_meta('user_url').

Hier ist, wie wir es mit dem zwanzig zehn Thema haben, ist dies 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() 
    ) 
); 
} 
+1

Was Sie geändert wird um die Linie 568 von functions.php. Hier ist eine Alternative, die den Autor Beiträge fällt zurück, wenn keine Website angegeben wird: 'esc_url (get_the_author_meta ('url') get_the_author_meta ('url'): get_author_posts_url (get_the_author_meta ('ID')))' Es ist auch ein Fleck in content-single.php um die Zeilen 49 und 63 – groovenectar