Bekleyen bir kullanıcı adı kaydının kaydını nasıl kaldırabilirim?


9

Yeni bir WordPress Multisite örneği kuruyorum ve hala yığıntaki bazı karışıklıkları çalışıyorum. En önemlisi şu anda, kullanıcı kaydı e-postaları bir nedenle teslim edilmiyor. Sonuç olarak, birkaç kullanıcı adı etkinleştirmek için gerekli onay e-postaları kaybolduğu için limboda sıkışır.

Şimdilik sadece bu kullanıcı adlarını onay e-postaları olmadan manuel olarak kaydetmek istiyorum, ancak bunu yapmaya çalıştığımda, adın ayrıldığını ve birkaç gün içinde mevcut olabileceğini söyleyen bir hata alıyorum. Bunların rezervasyonunu nasıl kaldırabilirim?

Yanıtlar:


13

DB Access katmanı ve satırları silme

WordPress, wpdbsınıfını kullanarak veritabanı katmanına erişimi yönetmek için kullanır global $wpdb. Sınıf, delete()tablolardaki satırları silmek için adlandırılmış bir yöntem sağlar :

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

Çok bölgeli tablolar ve etkinleştirme anahtarları

WordPress'in MU'ya özgü bazı tabloları vardır , burada bir tane {$wpdb->prefix}signups( wp-config.phpdosyanızda önek ayarlanmıştır ). Tablolar şeması burada . Kullanıcı hesabının etkinleştirilmesinden sorumlu, kullanıcı activation_keypostadaki bağlantıyı tıklattıktan sonra ayarlanan hesaptır . Bundan sonra, activatedanahtar bir datetimedeğerle ayarlanır . Hesap etkinleştirilmeden önce varsayılan değer olacaktır 0000-00-00 00:00:00(varsayılanı sorgulamanız gerekiyorsa). İşlemde ayrıca, kullanıcının aktif olup olmadığı olarak ayarlanan tinyint/ 1sütunu bulunur .active1

Çekirdeğin kendisi kullanır wpmu_activate_signup(). Bazı örnekler için bakın. Birincisi, bir kullanıcı girişini etkinleştirmek üzere güncelleyen - okunabilirlik için yeniden düzenlendi.

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

Henüz etkinleştirilmemiş hesaplara karşı sorgu oluşturma

Sadece WP'nin zor işi yapmasına izin verin:

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

WP_List_TableBir dize kullandığınızı belirtmek için bu istekleri gerçekleştirmek için (örneğin, a'yı genişletmek için ) bir (n admin) formu kullanıyorsanız 3. bağımsız değişkeni (dizi) kullanabilirsiniz . Hala $_POSTdeğerleri dezenfekte etmeniz gerektiğini unutmayın . İpucu: Siz de kullanabilirsiniz user_email.

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

9

Belirli bir kullanıcı için veritabanındaki bir kaydı silmek için hızlı bir çözüm istiyorsanız, bu istediğinizi yapmalıdır:

/**
 * 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)

E-postaların neden gönderilmediğini anlarken, WordPress.org deposunda 'Kullanıcı Etkinleştirme Anahtarları' adlı bir eklenti de kullanabilirsiniz. Multisite'deki kullanıcılar için etkinleştirme anahtarlarını manuel olarak silmenizi veya onaylamanızı sağlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.