1

我们公司博客中有 3 位作者,每个作者在个人资料设置中都有自己的站点 url

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(); ?>某个页面上有标签,并且作者是管理员,则链接必须是http://site.com/company/而不是http://site.com/author/Admin/.

我怎样才能做到这一点?

4

4 回答 4

6

看起来该the_author_posts_link函数只是调用以获取链接,该链接在返回之前将get_author_posts_url链接传递给过滤器。author_link在您的主题中functions.php,您可以添加类似这样的内容(未经测试):

add_filter('author_link', 'admin_author_link', 10, 3);
功能 admin_author_link($link, $author_id, $author_nicename) {
    如果($author_id==1){
        $link = 'http://site.com/company/';
    }
    返回$链接;
}
于 2009-05-24T15:14:39.853 回答
3

我认为最少的胃灼热将是wordpress > the_author_meta

像您所做的那样,让每个用户在 wordpress 用户配置文件中添加他们的 url。然后在您的主题中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()
    )
);
}
于 2012-01-02T18:44:32.640 回答
1

那是使用 .htaccess 重写 URL,这可以通过手动编辑 .htaccess 来实现。

但是对于使用诸如http://wordpress.org/extend/plugins/redirection/之类的插件的初学者来说更容易, 这似乎可以满足您的需求。

于 2009-05-20T15:23:33.933 回答
0

您可以使用 http 重写来做到这一点。

于 2009-05-18T15:47:26.840 回答