更新过期成员资格的用户角色

时间:2021-03-11 作者:nevax

是否可以在函数中使用函数。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;

1 个回复
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\' ) );
        }
    }

}

相关推荐

Adding column to wpex_users

因此,我尝试向wpex\\u用户添加一列。由于某种原因,我不能。这是我的问题:ALTER TABLE wpex_users ADD nametest VARCHAR(200);这给了我一个错误,我的标准值是错误的。它为空。我不知道该怎么办。我真的需要这个新专栏。您知道我需要添加新列的查询吗?我用PHPMyAdmin编写查询。