2009-05-15 6 views
0

Есть 3 авторов в нашем блоге компании, каждый автор имеет свой собственный URL сайта в настройках профиля:Заменить автор URL с различным один (WordPress)

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

ссылки на профили являются:

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

Мне нужно заменить ссылку на страницу администратора, так что если на какой-либо странице есть тег <?php the_author_posts_link(); ?>, а автором является Admin, ссылка должна быть http://site.com/company/ вместо http://site.com/author/Admin/.

Как я могу это сделать?

ответ

3

Похоже, что функция the_author_posts_link просто вызывает get_author_posts_url, чтобы получить ссылку, которая передает ссылку через фильтр author_link, прежде чем возвращать его. В вашей темы functions.php, вы могли бы добавить что-то вроде этого (непроверенные):

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

Вы можете сделать это с помощью перезаписи http.

1

Это URL-переписывание с помощью .htaccess, что возможно путем редактирования .htaccess вручную.

Но проще для новичка с плагином, например http://wordpress.org/extend/plugins/redirection/, который, похоже, будет делать то, что вам нужно.

3

Я думаю, что наименее изжога будет wordpress > the_author_meta.

У каждого пользователя добавить свой url в профиль пользователя wordpress, как вы это сделали. Затем в вашей теме functions.php используйте the_author_meta('user_url'). Помните, что это повторит URL. Чтобы использовать его в качестве переменной, используйте get_the_author_meta('user_url').

Вот как мы это делали с двадцать десять темой, это в 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

Что вы изменяли вокруг линии 568 из functions.php. Вот альтернатива, которая возвращается к стойкам автора, если не указано Сайт: 'esc_url (get_the_author_meta ('URL') get_the_author_meta ('URL'): get_author_posts_url (get_the_author_meta ('ID')))' Там также является пятном в содержании-single.php вокруг строк 49 и 63 – groovenectar