2013-05-04 94 views
2

我要实现自定义网址,作者。WordPress的自定义网址,作者

目前笔者URL是这样的: http://site.com/author/author-name/

我要像做 http://site.com/my-custom-url-here

为每个用户。 我一直在使用author_rewrite_rules过滤器,使用下面的代码试过,这个正确转换网址,但这给了我一个找不到网页的消息,当我浏览网址

add_filter('author_link', 'no_author_base', 1000, 3); 
function no_author_base($link, $author_id) { 
    $link_base = trailingslashit(get_option('home')); 
    $link = preg_replace("|^{$link_base}author/|", '', $link); 
    return $link_base . $link; 
} 
add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules'); 
function no_author_base_rewrite_rules($author_rewrite) {  
    global $wpdb; 
    $author_rewrite = array(); 
    $authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users"); 
    foreach($authors as $author) { 
     $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]'; 
     $author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]'; 
    }  
    return $author_rewrite; 
} 

任何帮助将不胜感激!

谢谢。 UPDATE

问题解决!基本上我不知道调用flush_rewrite_rules函数。

+0

后您实现的代码,你访问管理 - >永久链接页面刷新重写规则? – diggy 2013-05-04 22:08:45

+0

@diggy我不知道这件事情,我知道了,就在这里:http://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule看到我的回答:) – Shaheer 2013-05-04 22:17:55

回答

1

解决了!

我是这样做的:

所以我删除它,我并不需要author_link过滤器,我的自定义URL存储在usermeta表,所以我取他们并通过他们进入改写阵列,以及最重要的我不知道冲洗改写CACHE而那是原因,我的原代码是不工作

继承人的全码:

add_filter('author_rewrite_rules', 'my_author_url_with_custom_url_rewrite_rules'); 
function my_author_url_with_custom_url_rewrite_rules($author_rewrite) { 

    global $wpdb; 
    $author_rewrite = array(); 
    $authors = $wpdb->get_results("SELECT ID, user_nicename AS nicename, meta_value as profile_name 
            from $wpdb->users 
            LEFT JOIN wp_usermeta ON wp_usermeta.user_id = $wpdb->users.ID 
            WHERE meta_key = 'profile_name'");  

    foreach ($authors as $author) { 
    $author_rewrite["{$author->profile_name}/page/?([0-9]+)/?$"] = 'index.php?author_name=' . $author->nicename . '&paged=$matches[1]'; 
    $author_rewrite["{$author->profile_name}/?$"] = "index.php?author_name={$author->nicename}"; 
    } 
    return $author_rewrite; 
} 
flush_rewrite_rules(false); 

不要忘记在您完成重写规则后,请拨打flush_rewrite_rules,这非常昂贵!

+0

做到这一点在WP 3.8.1中工作?它甚至冲洗固定链接 – henrywright 2014-03-02 21:08:23

+0

不知道这一点henrywright后,不是为我工作,对不起 – Shaheer 2014-03-04 06:52:19