Получить метаданные пользователя из хука woocommerce_created_customer в Woocommerce - PullRequest
0 голосов
/ 01 сентября 2018

Я использую woocommerce API для создания пользовательского API, работает нормально, а новый клиент создает в WP штраф. Но проблема в том, что когда я использую хук "woocommerce_created_customer", я не могу получить метаданные пользователя, такие как "имя", "фамилия" и т. Д.

Вот часть моего кода:

```
$this->loader->add_action( 'woocommerce_created_customer', $plugin_admin, 'add_user_to_zendesk', 50 );
public function add_user_to_zendesk( $user_id ) {
        if ( isset( $user_id ) && ! empty( $user_id ) ) {
            $user = get_user_by( 'id', $user_id )->data;
            error_log('USER DATA'. print_r( $user, true ) );
            error_log('USER METADATA'. print_r( get_user_meta($user_id), true ) );
         }
}
```

Вот ответ в лог-файле

`` `

[01-Sep-2018 08:30:50 UTC] USER DATAstdClass Object
(
    [ID] => 99
    [user_login] => geek2
    [user_pass] => XXXXXXXXX.
    [user_nicename] => geek2
    [user_email] => geek2@gmail.com
    [user_url] => 
    [user_registered] => 2018-09-01 08:30:49
    [user_activation_key] => 
    [user_status] => 0
    [display_name] => geek2
)

[01-Sep-2018 08:30:50 UTC] USER METADATAArray
(
    [nickname] => Array
        (
            [0] => geek2
        )

    [first_name] => Array
        (
            [0] => 
        )

    [last_name] => Array
        (
            [0] => 
        )

    [description] => Array
        (
            [0] => 
        )

    [rich_editing] => Array
        (
            [0] => true
        )

    [syntax_highlighting] => Array
        (
            [0] => true
        )

    [comment_shortcuts] => Array
        (
            [0] => false
        )

    [admin_color] => Array
        (
            [0] => fresh
        )

    [use_ssl] => Array
        (
            [0] => 0
        )

    [show_admin_bar_front] => Array
        (
            [0] => true
        )

    [locale] => Array
        (
            [0] => 
        )

    [wp_capabilities] => Array
        (
            [0] => a:1:{s:8:"customer";b:1;}
        )

    [wp_user_level] => Array
        (
            [0] => 0
        )

    [_yoast_wpseo_profile_updated] => Array
        (
            [0] => 1535790649
        )

)
```

Может кто-нибудь помочь разобраться в проблеме ...

1 Ответ

0 голосов
/ 01 сентября 2018

Обновление

Сначала вы можете попробовать одну из этих 2 альтернатив (добавить в свой код) :

1) Путь Wordpress с использованием WP_User Класс:

// Get an instance of the WP_User Object
$user = new WP_User( $user_id );

// Get the first name and the last name from WP_User Object 
$first_name = $user->first_name;
$last_name  = $user->last_name;

2) Способ Woocommerce с использованием WC_Customer Класс и методы:

// Get an instance of the WC_Customer Object
$customer = new WC_Customer( $customer_id );

// Get the first name and the last name from WC_Customer Object 
$first_name = $customer->get_first_name();
$last_name  = $customer->get_last_name();

Затем, глядя на исходный код WC_Customer_Data_Store, можно найти интересную ловушку действия: woocommerce_new_customer с уникальным аргументом $customer_id.

В исходном коде $customer->get_first_name() и $customer->get_last_name() появляются в коде, поэтому они существуют, и вы можете получить их из WC_Customer экземпляра Object, используя $customer_id, как описано здесь ниже…


Последняя возможность

Поскольку метаданные пользователя, кажется, задерживаются, а Woocommerce, похоже, использует функции WordPress, вы можете попробовать использовать хук WordPress add_user_meta, который имеет 3 аргумента:

  • $user_id
  • $meta_key
  • $meta_value

Но я не знаю, как включить его в ваш код, надеясь, что вы сможете получить данные из WP_User Object или WC_Customer Object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...