谢谢你的支持!我需要使用WordPress和BuddyPress在我的页面中自定义用户url。例如:
发件人:(当前)
http://example.com/user/pum_su411
到
http://example.com/user/548234
With548234
是用户的ID。
我想在完成自定义后,所有用户都会自动有上面这样的url。
感谢所有的解决方案!
function _bp_core_get_user_domain($domain, $user_id, $user_nicename = false, $user_login = false) {
if ( empty( $user_id ) ){
return;
}
if( isset($user_nicename) ){
$user_nicename = bp_core_get_username($user_id);
}
$after_domain = bp_get_members_root_slug() . '/' . $user_id;
$domain = trailingslashit( bp_get_root_domain() . '/' . $after_domain );
$domain = apply_filters( 'bp_core_get_user_domain_pre_cache', $domain, $user_id, $user_nicename, $user_login );
if ( !empty( $domain ) ) {
wp_cache_set( 'bp_user_domain_' . $user_id, $domain, 'bp' );
}
return $domain;
}
add_filter('bp_core_get_user_domain', '_bp_core_get_user_domain', 10, 4);
function _bp_core_get_userid($userid, $username){
if(is_numeric($username)){
$aux = get_userdata( $username );
if( get_userdata( $username ) )
$userid = $username;
}
return $userid;
}
add_filter('bp_core_get_userid', '_bp_core_get_userid', 10, 2);
function _bp_get_activity_parent_content($content){
global $bp;
$user = get_user_by('slug', $bp->displayed_user->fullname); // 'slug' - user_nicename
return preg_replace('/href=\"(.*?)\"/is', 'href="'.bp_core_get_user_domain($user->ID, $bp->displayed_user->fullname).'"', $content);
}
add_filter( 'bp_get_activity_parent_content','_bp_get_activity_parent_content', 10, 1 );
function _bp_get_activity_action_pre_meta($content){
global $bp;
$fullname = $bp->displayed_user->fullname; // 'slug' - user_nicename
$user = get_user_by('slug', $fullname);
if(!is_numeric($user->ID) || empty($fullname)){
$args = explode(' ', trim(strip_tags($content)));
$fullname = trim($args[0]);
$user = get_user_by('slug', $fullname);
}
return preg_replace('/href=\"(.*?)\"/is', 'href="'.bp_core_get_user_domain($user->ID, $fullname).'"', $content);
}
add_action('bp_get_activity_action_pre_meta', '_bp_get_activity_action_pre_meta');
add_filter('bp_core_get_userid_from_nicename', '_bp_core_get_userid', 10, 2);
我只是花了一点时间浏览了BuddyPress的文档、法典和文件,我可以找到一些方法来更改url的/user/
部分,但遗憾的是没有更改url的/username
部分。
通过阅读,它被控制在BuddyPress的核心内,对核心的任何更改都可能导致崩溃,并且更有可能导致问题或覆盖。
这并不是说这是不可能的虽然这是最肯定的可能但它将需要大量的编辑许多不同的文件编辑一些BuddyPress的功能和有没有保证的工作直接出来甚至进一步工作当文件更新时。
我建议您进入BuddyPress Trac并输入一张票证,添加该功能以更改用户url结构。能够在用户名、全名、ID或任何其他唯一可识别字符串之间进行交换将是一个很酷的特性。
您可以在这里访问:https://buddypress.trac.wordpress.org/
或者,您可以尝试aSeptik在上面所做的操作,但请确保在BuddyPress更新时使用任何更改更新该文件。