¿Existe una función de wordpress para eliminar de manera limpia una entrada en la tabla de registro?

4

Administro un proceso de registro de usuario (en un WP multisitio).

Sin embargo, algunos de mis usuarios pueden crear nuevos en una página de inicio. Si observa En esta publicación descubrirás las 3 etapas para esto:

  1. Use wpmu_signup_user() para agregar una entrada para un nuevo (futuro) usuario en la tabla suscripciones (puede evitar que WP envíe un correo de notificación en esta etapa, si lo desea, con el gancho derecho) )
  2. Use una consulta SQL para obtener el activation_key generado en esta entrada de la tabla suscripciones para este usuario
  3. Use wpmu_activate_signup($key) para crear una entrada en la tabla users

Esto funciona bien, pero una vez que se crea el usuario (con una entrada en la tabla users ), necesitaría eliminar esa entrada que aún está en la tabla de registros y es inútil. Alguien sabría cómo hacer esto wp_properly o ¿debería hacer una consulta de eliminación?

    
pregunta Pierre 20.08.2016 - 16:50

1 respuesta

2

Usted tiene razón acerca de que la fila no tiene mucho uso fuera del límite de dos días en que un usuario no activa su cuenta.

Eché un vistazo al código base y puedo confirmar que no hay una función de API para eliminar una entrada de registro. El único código que elimina un registro es la función wpmu_validate_user_signup() . Comprueba los registros actuales para los mismos user_login y user_email . Si existe alguno de estos, verifica si ese usuario se registró en los últimos dos días. Tienen dos días para activar su cuenta, o que user_login o user_email esté disponible para otra persona.

Lo que haría es enganchar en el gancho wp_activate_user para eliminarlo de inmediato.

add_action( 'wpmu_activate_user', function( $user_id, $password, $meta ) {
    global $wpdb;
    // Sadly the user email isn't passed into the action
    $user = get_user_by( 'id', $user_id );
    if( $user ){
        $wpdb->delete( $wpdb->signups, array( 'user_email' => $user->user_email ) );
    }
}, 0, 3);
    
respondido por el Brian Fegter 10.02.2017 - 11:28

Lea otras preguntas en las etiquetas