Argumento faltante de WP/WC en la función WooCommerce

2 minutos de lectura

avatar de usuario
charlie

Tengo WordPress con WooCommerce instalado y estoy tratando de usar este código para iniciar sesión como usuario administrador:

if ( !is_user_logged_in() ) {
    $user = get_userdatabylogin( $username ); // get_user_by('login', $user_login);
    $id = $user->ID;

    wp_set_current_user( $id, $user->user_login );
    wp_set_auth_cookie( $id );
    do_action( 'wp_login', $user->user_login );
}

Pero está devolviendo este mensaje de error:

Advertencia: Falta el argumento 2 para wc_maybe_store_user_agent() en plugins/woocommerce/includes/wc-core-functions.php en la línea 1516

He intentado buscar en línea, pero nadie parece haber tenido este problema.

  • ¿Se resolvió el problema o todavía enfrenta el problema? Si se resuelve, debe publicar una respuesta aquí.

    – Parantap Parashar

    8 de junio de 2017 a las 6:33

  • no use la función get_userdatabylogin ya que WP la desaprobó. Utilice get_user_by() en su lugar.

    – Mukesh Panchal

    8 de junio de 2017 a las 9:21

avatar de usuario
solo muju

if (!is_user_logged_in()) {

    //determine WordPress user account to impersonate
    $user_login = 'guest';

    //get user ID
    $user = get_userdatabylogin($user_login); // below WP 3.3.0

    //$user =  get_user_by('login', $user_login); above or equals WP 3.3.0

    $user_id = $user->ID;

    //login
    wp_set_current_user($user_id, $user_login);
    wp_set_auth_cookie($user_id);
    do_action('wp_login', $user_login);
}

Hay un gancho en WooCommerce como este.

add_action( 'wp_login', 'wc_maybe_store_user_agent', 10, 2 );

Los “wc_maybe_store_usuario_agente” espera 2 parámetros. Si la ID de usuario no está configurada, mostrará el error que mencionó. Pruebe mi fragmento de código anterior

La función está en la línea 1516 en plugins/woocommerce/includes/wc-core-functions.php

function wc_maybe_store_user_agent( $user_login, $user ) {
    if ( 'yes' === get_option( 'woocommerce_allow_tracking', 'no' ) && user_can( $user, 'manage_woocommerce' ) ) {
        $admin_user_agents   = array_filter( (array) get_option( 'woocommerce_tracker_ua', array() ) );
        $admin_user_agents[] = wc_get_user_agent();
        update_option( 'woocommerce_tracker_ua', array_unique( $admin_user_agents ) );
    }
}
add_action( 'wp_login', 'wc_maybe_store_user_agent', 10, 2 );

  • si gracias Tienes toda la razón, 2 argumentos – falta uno

    – Vincent Guesné

    24 de enero de 2019 a las 21:52

  • bueno . . .

    – Melvin

    25 de febrero de 2019 a las 10:19

Te perdiste un parámetro. Prueba esto.

do_action( 'wp_login', $user->user_login, $user );

Fuente: https://developer.wordpress.org/reference/hooks/wp_login/

  • no parece estar iniciando sesión

    – charlie

    12 de mayo de 2017 a las 9:39

  • ¿Tienes alguna idea de qué podría estar impidiendo que inicie sesión?

    – charlie

    12 mayo 2017 a las 12:00

  • @charlie, ¿qué función o cómo se construye todo el código? como estas llamando

    –Reigel Gallarde

    10 de junio de 2017 a las 11:38

  • exactamente lo que faltaba en mi caso!

    – Jay Pagnis

    12/09/2017 a las 18:52

¿Ha sido útil esta solución?