septiembre 2022

Encuentra todos los usuarios con ciertos metadatos en WordPress

Así es como puede encontrar todos los usuarios que tienen un determinado valor de metadatos para una meta_clave específica.

Primero establezca una matriz de argumentos con la meta_clave, el valor y el operador específicos.

En mi caso, quería que todos los usuarios tuvieran un número de miembro igual a ‘xxxxxxx’. Meta_key es ‘member_number’ y meta_value es ‘xxxxxxx’. Si ambos valores son verdaderos para un usuario, quiero que se devuelva el objeto de usuario.

//
$args = array(
    'meta_query' => array(
        array(
            'key' => 'member_number',
            'value' => 'xxxxxxx',
            'compare' => '='
        )
    )
);
$member_arr = get_users($args);
if ($member_arr) {
  foreach ($member_arr as $user) {
    echo 'User ID ='.$user->ID;
  }
} else {
  echo 'no users found';
}
//

El resultado de esto será una lista de ID de usuario para los usuarios que tienen un meta_valor de ‘xxxxxxx’ para la meta_clave ‘member_number’. Este código puede ir a cualquier lugar donde se permita php en WordPress.

agregar nombre y apellido a el formulario de registro

add_action( 'register_form', 'myplugin_register_form' );
function myplugin_register_form() {

    $first_name = ( ! empty( $_POST['first_name'] ) ) ? trim( $_POST['first_name'] ) : '';
    $last_name = ( ! empty( $_POST['last_name'] ) ) ? trim( $_POST['last_name'] ) : '';

        ?>
        <p>
            <label for="first_name"><?php _e( 'First Name', 'mydomain' ) ?><br />
                <input type="text" name="first_name" id="first_name" class="input" value="<?php echo esc_attr( wp_unslash( $first_name ) ); ?>" size="25" /></label>
        </p>

        <p>
            <label for="last_name"><?php _e( 'Last Name', 'mydomain' ) ?><br />
                <input type="text" name="last_name" id="last_name" class="input" value="<?php echo esc_attr( wp_unslash( $last_name ) ); ?>" size="25" /></label>
        </p>

        <?php
    }

    //2. Add validation. In this case, we make sure first_name and last_name is required.
    add_filter( 'registration_errors', 'myplugin_registration_errors', 10, 3 );
    function myplugin_registration_errors( $errors, $sanitized_user_login, $user_email ) {

        if ( empty( $_POST['first_name'] ) || ! empty( $_POST['first_name'] ) && trim( $_POST['first_name'] ) == '' ) {
            $errors->add( 'first_name_error', __( '<strong>ERROR</strong>: You must include a first name.', 'mydomain' ) );
        }
        if ( empty( $_POST['last_name'] ) || ! empty( $_POST['last_name'] ) && trim( $_POST['last_name'] ) == '' ) {
            $errors->add( 'last_name_error', __( '<strong>ERROR</strong>: You must include a last name.', 'mydomain' ) );
        }
        return $errors;
    }

    //3. Finally, save our extra registration user meta.
    add_action( 'user_register', 'myplugin_user_register' );
    function myplugin_user_register( $user_id ) {
        if ( ! empty( $_POST['first_name'] ) ) {
            update_user_meta( $user_id, 'first_name', trim( $_POST['first_name'] ) );
            update_user_meta( $user_id, 'last_name', trim( $_POST['last_name'] ) );
        }
    }
Scroll al inicio