Ответы пользователя по тегу WooСommerce
  • Дубль контента во вкладке с описанием товара на woocommerce - почему?

    @ligisayan Автор вопроса
    Нашел ответ здесь

    Нужно в functions.php прописать следующую инструкцию:
    function mytheme_add_woocommerce_support() {
    	add_theme_support( 'woocommerce' );
    }
    add_action( 'after_setup_theme', 'mytheme_add_woocommerce_support' );


    Смысл в том, что если в теме не задекларировать, что она использует woocommerce, то по умолчанию шаблоны будут браться не из папки woocommerce в теме как мы того ожидаем, а из корня, т.е. single.php будет приоритетнее по отношению к single-product.php в подпапке темы

    Темы по умолчанию в этом смысле отличаются, т.к. woocommerce закладывает в них поддержку изначально.
    Ответ написан
    Комментировать
  • Как добавить заголовок с именем в приходящем заказе в магазине woocommerce?

    @ligisayan Автор вопроса
    Решил таким способом, возможно он немного корявый, но работает. Стили для админки нужны потому что по какой-то причине при таком решении имя и фамилия выводится дважды: как было изначально и уже с лейблами.
    Если будут решения лучше - с удовольствием их отмечу.
    add_filter( 'woocommerce_admin_billing_fields', 'custom_admin_billing_fields', 10, 1 );
    function custom_admin_billing_fields( $billing_fields ) {
        $billing_fields['first_name']['show'] = true;
        $billing_fields['last_name']['show'] = true;
        return $billing_fields;
    }
    
    add_action('admin_head', 'my_custom_fonts');
    
    function my_custom_fonts() {
      echo '<style>
    #order_data .order_data_column_container .address>p:first-of-type {
        display: none;
    }
      </style>';
    }
    Ответ написан
    Комментировать
  • Как авторизоваться в woocommerce по мобильному телефону?

    @ligisayan Автор вопроса
    Вот так
    $order = new WC_Order($order_id);
       $order_email = $order->billing_email;
       $email = email_exists( $order_email );  
       $user = username_exists( $order_email );
       		$random_password = wp_generate_password();
    	 	$userdata = array(
    			'user_pass'          => $random_password,
    			'user_login'         => $order_email,
    			'first_name'         => $order->billing_first_name,
    			'user_email'         => $order_email,
    			'role'               => 'customer',
    		);
    		$userid = wp_insert_user( $userdata );
    Ответ написан
    Комментировать
  • Как получить данные поля POST для регистрации клиента после обработки формы заказа?

    @ligisayan Автор вопроса
    Реализовал подключившись к данным после самого заказа
    add_action( 'woocommerce_thankyou', 'create_user_callback' );
    function create_user_callback($order_id){
       $order = wc_get_order( $order_id );
       $order_detail['customer_first_name'] = get_post_meta( $order_id, '_billing_first_name', true );
       $order_detail['customer_phone']      = get_post_meta( $order_id, '_billing_phone', true );
       $order_detail['customer_email']      = get_post_meta( $order_id, '_billing_email', true );
       $order_detail['customer_address']    = get_post_meta( $order_id, '_billing_address_2', true );
       $customers = get_users( array( 'role' => 'customer' ) );
       foreach( $customers as $customer ) :
           $customers_email = get_user_meta( $customer->ID, 'billing_phone', true );
           if($customers_phone!=$order_detail['customer_phone'] && $customer->user_email!=$order_detail['billing_email']) {
                $userdata = array(
                    'user_pass'          => '123',
                    'user_login'         => $order_detail['customer_email'],
                    'first_name'         => $order_detail['customer_first_name'],
                    'user_email'         => $order_detail['customer_email'],
                    'role'               => 'customer',
                );
                $userid = wp_insert_user( $userdata );
                if ( !is_wp_error( $userid ) ) { 
                    add_user_meta( $userid, 'billing_phone', $order_detail['customer_phone'] );
                    add_user_meta( $userid, 'billing_address_2', $order_detail['customer_address'] );
                }
           }
       endforeach;
    }
    Ответ написан
    Комментировать
  • Как заменить в админке в статусе заказа гостя на зарегистрованного пользователя?

    @ligisayan Автор вопроса
    Добавление функции
    wc_update_new_customer_past_orders( $userid );
    помогло мне связать текущего пользователя со всеми предыдущими аккаунтами.
    Почерпнул из этой статьи
    А вот эта функция позволяет связать текущий заказ с моим пользователем
    update_post_meta($order_id, '_customer_user', get_current_user_id());
    Ответ написан
    Комментировать
  • Как при удалении последнего товара переадресовывать на шаблон с пустой корзиной?

    @ligisayan Автор вопроса
    Нашел решение - привязался к триггеру updated_wc_div

    $('body').on('updated_wc_div',function() {
       location.reload(); // uncomment this line to refresh the page.
    });
    Ответ написан
    Комментировать
  • Как избавиться от уведомления "товар удален. отменить?"?

    @ligisayan Автор вопроса
    Сработало только скрытие по полному пути в стилях
    .site-content>.col-full>.woocommerce>.woocommerce-message {
    	display: none!important;
    }
    Ответ написан
    Комментировать