보류중인 사용자 이름 등록을 예약 해제하려면 어떻게해야합니까?


9

새 WordPress Multisite 인스턴스를 설정하고 있으며 여전히 스택에서 일부 문제를 해결하고 있습니다. 현재 가장 중요한 것은 사용자 등록 이메일이 어떤 이유로 배달되지 않는 것입니다. 결과적으로, 사용자 이름을 활성화하는 데 필요한 확인 이메일이 유실되어 여러 사용자 이름이 림보에 고정됩니다.

지금은 확인 이메일 없이이 사용자 이름을 수동으로 등록하고 싶지만 그렇게하려고 할 때 이름이 예약되어 있고 며칠 안에 사용 가능하다는 오류가 발생합니다. 예약을 취소하려면 어떻게해야합니까?

답변:


13

DB 액세스 계층 및 행 삭제

WordPress는 wpdb클래스를 사용하여을 사용하여 데이터베이스 계층에 대한 액세스를 관리합니다 global $wpdb. 이 클래스는 delete()테이블에서 행을 삭제하도록 명명 된 메소드를 제공합니다 .

$wpdb->delete( $table, $where, $where_format = null );

멀티 사이트 테이블 및 활성화 키

WordPress에는 일부 MU 특정 테이블이 있으며 그 중 하나는 {$wpdb->prefix}signups( wp-config.php파일에 접두사가 설정되어 있습니다 ). 여기 테이블 구성표 . 사용자 계정 활성화에 대한 책임은 사용자 activation_key가 메일에서 링크를 클릭 한 후에 설정됩니다. 그 후 activated키는 datetime값으로 설정됩니다 . 계정이 활성화되기 전에 기본값이 설정됩니다 0000-00-00 00:00:00(기본값을 쿼리해야하는 경우). 또한 프로세스에는 tinyint/ 1열이 active있으며 이는 1사용자가 활성 상태 인 경우로 설정됩니다 .

코어 자체는를 사용합니다 wpmu_activate_signup(). 몇 가지 예를 살펴보십시오. 하나는 사용자 항목을 업데이트하여 활성화하기 위해 업데이트 한 것으로, 가독성을 위해 재 작업되었습니다.

$wpdb->update(
    $wpdb->signups,
    array(
        'active'    => 1,
        'activated' => current_time( 'mysql', true ),
    ),
    array( 'activation_key' => $key, )
);

아직 활성화되지 않은 계정에 대한 쿼리 작성

WP가 열심히 일하도록하십시오.

global $wpdb;
$wpdb->delete(
    $wpdb->signups,
    array( 'user_login' => 'some_login', )
);

(n admin) 양식을 사용하여 이러한 요청을 수행하는 경우 (예 : a 확장 WP_List_Table) 문자열을 사용하고 있음을 나타내면 3 번째 인수 (배열)를 사용할 수 있습니다 . 여전히 $_POSTed 값을 삭제해야 합니다. 힌트 : 당신도 사용할 수 있습니다 user_email.

global $wpdb;
$wpdb->delete(
    $wpdb->signups,
    array( 'user_login' => 'some_login', ),
    array( '%s', )
);

9

특정 사용자의 데이터베이스에서 가입을 삭제하기위한 빠른 솔루션을 원한다면 원하는 작업을 수행해야합니다.

/**
 * Delete a row in the signups table for a given username.
 *
 * @param string $user_login Username.
 * @return bool Whether the signup row was successfully deleted.
 */
function delete_activation_key_by_user( $user_login ) {
    global $wpdb;

    $success = false;

    if ( false !== $wpdb->delete( $wpdb->signups, array( 'user_login' => sanitize_text_field( $user_login ) ) ) ) {
        $success = true;
    }
    return $success;
}

var_dump( delete_activation_key_by_user( 'the_username' ) );
// bool(true|false)

전자 메일이 전송되지 않는 이유를 파악하는 동안 WordPress.org 리포지토리에서 '사용자 활성화 키'라는 플러그인을 사용하여이 문제를 관리 할 수 ​​있습니다. Multisite 사용자의 활성화 키를 수동으로 삭제하거나 승인 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.