我正在开发一个插件来扩展BuddyBoss平台。具体来说,我正在将BB用户信息与Wordpress用户元数据同步。
我的大部分代码都能正常工作(国家和地区组织更新良好),但同步我的“性别”字段并没有按预期工作。它似乎适用于男性和女性,但当选择“其他”时,它会将wordpress用户元字段设置为“女性”。我有两个问题:
你能看到这段代码有什么问题吗:(忽略所有5次控制台输出尝试-这是我下面的第二个问题!)
function BB_WP_SYNC_update_wordpress_usermeta( $user_id, $posted_field_ids, $errors) {
console_log( $user_id);
var_dump($user_id);
debug_to_console("inside sync function");
error_log($user_id);
ChromePhp::log("chromephp inside sync");
if ( empty( $user_id ) ) {
$user_id = bp_loggedin_user_id();
}
if ( empty( $errors ) ) {
$country = xprofile_get_field_data(9, $user_id);
$region = xprofile_get_field_data(29, $user_id);
$gender = xprofile_get_field_data(5, $user_id);
ChromePhp::log($gender);
var_dump($gender);
if ($gender == \'his_Male\') {
$wpgender = \'Male\';
} elseif ($gender = \'her_Female\') {
$wpgender = \'Female\';
} else {
$wpgender = \'Other\';
}
ChromePhp::log($wpgender);
var_dump($wpgender);
$dob = xprofile_get_field_data(4, $user_id);
update_user_meta($user_id, \'ofc_country\', $country);
update_user_meta($user_id, \'ofc_regional_organisation\', $region);
update_user_meta($user_id, \'ofc_gender\', $wpgender);
update_user_meta($user_id, \'ofc_date_of_birth\', $dob);
} else {
ChromePhp::log($errors);
}
}
add_action( \'xprofile_updated_profile\', \'BB_WP_SYNC_update_wordpress_usermeta\', 1, 3 );
问题2:我尝试了各种方法(从上面的代码可以看出)将性别变量输出到控制台。但什么都不管用。我已经设置了ChromePhp,如果我在同一个插件的另一个函数中使用它,它就会工作,但我无法让它在这个特定函数中工作。与创建一个使用JS输出到控制台的函数相同。我什么也得不到。var\\u dump也不起作用-我认为这是因为一旦编辑完成并按下submit,用户配置文件就会重新加载。(我不是专家,所以这让我头痛不已)。ChromePHP工作的函数是Buddyboss插件模板的一部分。这会很好地输出到控制台,因此我知道ChromePP设置正确:
if ( ! function_exists( \'BB_WP_SYNC_get_settings_sections\' ) ) {
function BB_WP_SYNC_get_settings_sections() {
ChromePhp::log(\'Hello console!\');
$settings = array(
\'BB_WP_SYNC_settings_section\' => array(
\'page\' => \'addon\',
\'title\' => __( \'WP Sync Settings\', \'buddyboss-wp-usermeta-sync\' ),
),
);
return (array) apply_filters( \'BB_WP_SYNC_get_settings_sections\', $settings );
}
}
SO网友:roly151
我更改了wordpress元性别数据以匹配BuddyBoss数据(即his\\u-Male、her\\u-Male、their\\u-Other),并删除了转换该数据的if语句,该函数现在按预期工作。我仍然很想理解为什么它对“其他人”不起作用。
function BB_WP_SYNC_update_wordpress_usermeta( $user_id, $posted_field_ids, $errors) {
if ( empty( $user_id ) ) {
$user_id = bp_loggedin_user_id();
}
if ( empty( $errors ) ) {
$country = xprofile_get_field_data(\'Country\', $user_id);
$region = xprofile_get_field_data(\'Regional Association / Federation\', $user_id);
$gender = xprofile_get_field_data(\'Gender\', $user_id);
$dob = xprofile_get_field_data(\'Date of Birth\', $user_id);
update_user_meta($user_id, \'ofc_country\', $country);
update_user_meta($user_id, \'ofc_regional_organisation\', $region);
update_user_meta($user_id, \'ofc_gender\', $gender);
update_user_meta($user_id, \'ofc_date_of_birth\', $dob);
} else {
ChromePhp::log($errors);
}
}
add_action( \'xprofile_updated_profile\', \'BB_WP_SYNC_update_wordpress_usermeta\', 1, 3 );
我仍然在寻找能够查看php变量的解决方案(我的第二个问题)。提前谢谢!