Я пытаюсь изменить отображаемый пользовательский слаг в buddypress, используя фильтр bp_core_get_user_domain ссылка на этот фильтр находится в каталоге wp-content \ plugins \ buddypress \ bp-members \ bp-members-functions.php вдоль линиичисло 172
содержание этой функции:
function bp_core_get_user_domain( $user_id = 0, $user_nicename = false, $user_login = false ) {
if ( empty( $user_id ) ) {
return;
}
$username = bp_core_get_username( $user_id, $user_nicename, $user_login );
if ( bp_is_username_compatibility_mode() ) {
$username = rawurlencode( $username );
}
$after_domain = bp_core_enable_root_profiles() ? $username : bp_get_members_root_slug() . '/' . $username;
$domain = trailingslashit( bp_get_root_domain() . '/' . $after_domain );
// Don't use this filter. Subject to removal in a future release.
// Use the 'bp_core_get_user_domain' filter instead.
$domain = apply_filters( 'bp_core_get_user_domain_pre_cache', $domain, $user_id, $user_nicename, $user_login );
/**
* Filters the domain for the passed user.
*
* @since 1.0.1
*
* @param string $domain Domain for the passed user.
* @param int $user_id ID of the passed user.
* @param string $user_nicename User nicename of the passed user.
* @param string $user_login User login of the passed user.
*/
return apply_filters( 'bp_core_get_user_domain', $domain, $user_id, $user_nicename, $user_login );
}
Я пытаюсь использовать это так:
function my_custom_filter($domain, $user_id) {
$oldSlug= get_user_slug_by_user_id($user_id);
if ($oldSlug==='foo') {
$domain = trailingslashit(bp_get_root_domain() . '/' . 'members/' . 'bar');
}
return $domain;
}
add_filter('bp_core_get_user_domain', 'my_custom_filter', 10, 2);
Этот фильтр изменяет это всякий раз, когда example.com/members/foo
доступ, он перейдет к example.com/members/bar
ПРОБЛЕМА
это работает, как ожидалось, но моя проблема здесь все ajax example.com/members/bar
равны 404. Еслия отключил фильтр, и он пошел на example.com/members/foo
все Ajax в порядке 200.