Предварительно заполните поля входа в Woocommerce переменными URL, сохраненными в сеансе - PullRequest
0 голосов
/ 08 февраля 2019

Я использую " Предварительно заполнить поля проверки Woocommerce с помощью кода ответа URL-адресов, сохраненных в сеансе ", пытаясь заполнить имя пользователя и пароль для входа в Woocommerce переменными, сохраненными в сеансе.

Этомой настроенный код в functions.php пока:

// Save user data from URL to Woocommerce session, this works fine
add_action( 'template_redirect', 'set_custom_data_wc_session' );
function set_custom_data_wc_session () {
    if ( isset( $_GET['sliced_client_email'] ) || isset( $_GET['tu_name'] ) ) {
        $email   = isset( $_GET['sliced_client_email'] )   ? esc_attr( $_GET['sliced_client_email'] )   : '';
        $pw = isset( $_GET['password'] ) ? esc_attr( $_GET['password'] ) : '';

        // Set the session data
        WC()->session->set( 'custom_data', array( 'email' => $email, 'password' => $pw ) );
    }
}

// Autofill checkout fields from user data saved in Woocommerce session, this is my problem
add_filter( 'woocommerce_login_form' , 'prefill_login_fields' );
function prefill_login_fields ( $xxx ) {
    // Get the session data
    $data = WC()->session->get('custom_data');

    // Email
    if( isset($data['email']) && ! empty($data['email']) )
       $xxx['username']['default'] = $data['email'];

    // Password
    if( isset($data['password']) && ! empty($data['password']) )
        $xxx['password']['default'] = $data['password'];
}

Но, конечно, я не могу найти параметры для заполнения.На странице оформления заказа есть $address_fields['billing_email'], но я не могу найти аналогичный параметр для страницы входа.Не уверен, что положить в $xxx и $xxx['username']['default'] и $xxx['password']['default'].

Спасибо за помощь !!

1 Ответ

0 голосов
/ 08 февраля 2019

Хорошо, поэтому вместо использования переменных, хранящихся в сеансе, я нашел простое решение jQuery .

add_action('woocommerce_login_form','woocommerce_js_2');

function woocommerce_js_2()
{ // break out of php 
?>
<script>
// Setup a document ready to run on initial load
jQuery(document).ready(function($) {
    var r = /[?|&](\w+)=(\w+)+/g;  //matches against a kv pair a=b
    var query = r.exec(window.location.href);  //gets the first query from the url
    while (query != null) {

            //index 0=whole match, index 1=first group(key) index 2=second group(value)
        $("input[name="+ query[1] +"]").attr("value",query[2]);

        query = r.exec(window.location.href);  //repeats to get next capture
    }

});
</script>
<?php } // break back into php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...