是否可以在函数中使用函数。php,当成员身份从“状态”变为“状态”时,会自动更改用户角色;“活动”;“到”;已过期?
例如:如果活动成员身份切换为过期,我希望用户角色自动从;认购人;“到”;“已阻止”;对于相关用户。
我尝试了以下钩子,但当我将用户成员身份更新为过期时,它没有任何作用。我认为我的问题来自元数据;“过期”;登记在表中;rcp\\U成员资格“;(字段“状态”)且不在“上”;“用户元”;桌子
add_action( \'profile_update\', \'my_profile_update\', 10, 2 );
function my_profile_update( $user_id, $old_user_data ) {
if( get_the_author_meta( "rcp_status", $user_id ) == "expired") {
$u = new WP_User( $user_id );
$u->set_role(\'blocked\');
}
}
以及我必须更新的数据(我通过函数“set\\u role()”尝试的内容);在代码中)位于数据库表中;元数据“;,使用此SQL请求:
UPDATE `wp_usermeta` SET `meta_value` = \'a:1:{s:11:\\"bbp_blocked\\";b:1;}\' WHERE `wp_usermeta`.`user_id` = 29;
SO网友:WPhil
如果需要获取自定义数据库表中字段的值,可以尝试使用SQL查询。您必须检查列名或表名才能构建查询的最终版本。
add_action( \'profile_update\', \'my_profile_update\', 10, 2 );
function my_profile_update( $user_id, $old_user_data ) {
global $wpdb;
$status = $wpdb->get_var( $wpdb->prepare(
" SELECT rcp_status FROM rcp_membership WHERE ID = %d ",
$user_id
) );
if( $status == "expired") {
$new_role = array( \'bbp_blocked\' => 1 );
$data = serialize( $new_role );
$updated = update_user_meta( $user_id, \'wp_capabilities\', $data );
// check and make sure the stored value matches $new_role.
if ( $data != get_user_meta( $user_id, \'wp_capabilities\', true ) ) {
wp_die( __( \'user role not updated\', \'textdomain\' ) );
}
}
}