• Добавила кастомный чекбокс в оформлении заказа woocommerce:

    // Добавление чекбокса
    add_action( 'woocommerce_review_order_before_submit', 'truemisha_acceptance_checkbox', 25 );

    function truemisha_acceptance_checkbox() {


    woocommerce_form_field( 'acceptance_checkbox', array(
    'type' => 'checkbox',
    'class' => array( 'form-row' ),
    'label_class' => array( 'woocommerce-form__label-for-checkbox' ),
    'input_class' => array( 'woocommerce-form__input-checkbox' ),
    'required' => true,
    'checked' => 'checked',
    'default' => 1,
    'label' => 'Я ознакомлен с <a href="/delivery/">условиями доставки</a>',
    ));

    }

    // Валидация
    add_action( 'woocommerce_checkout_process', 'truemisha_acceptance_checkbox_error', 25 );

    function truemisha_acceptance_checkbox_error() {

    if ( empty( $_POST[ 'acceptance_checkbox' ] ) ) {
    wc_add_notice( 'Вам нужно подтвердить согласие с условиями доставки.', 'error' );
    }

    }

    Проблема в том, что плагин WPML не хочет видеть лейбл чекбокса и текст ошибки и соответственно не могу добавить перевод строк. Как это всё подружить?

    В плагине WPML включено автообнаружение строк, захожу на страницу где чекбокс во фронтенде, обновляю её, потом перехожу в WPML в раздел непереведенных строк и там ничего не появляется..

Просмотр 1 ответа (всего 1)
  • Разобралась, лейблы на странице оформления надо выводить функцией __($text, ‘mydomain’) с указанием текстового домена, я указала woocommerce, либо название темы можно, так же в плагине WPML нужно просканировать строки в разделе «Theme and plugins localization», они как будто кешируются и надо его пнуть, чтобы они обнаружились. Плюс если есть плагины кеширования на сайте, то тоже сбросить кеш. И перед сканированием посетить во фронте страницу с новой строкой, которая требует перевода. Рабочий код:

    // Добавление чекбокса
    add_action( 'woocommerce_review_order_before_submit', 'truemisha_acceptance_checkbox', 25 );

    function truemisha_acceptance_checkbox() {


    woocommerce_form_field( 'acceptance_checkbox', array(
    'type' => 'checkbox',
    'class' => array( 'form-row' ),
    'label_class' => array( 'woocommerce-form__label-for-checkbox' ),
    'input_class' => array( 'woocommerce-form__input-checkbox' ),
    'required' => true,
    'checked' => 'checked',
    'default' => 1,
    'label' => str_replace( '<a>', '<a href="/delivery/">', __( 'I have read <a>delivery terms</a>', 'woocommerce' ) ),
    ));

    }

    // Валидация
    add_action( 'woocommerce_checkout_process', 'truemisha_acceptance_checkbox_error', 25 );

    function truemisha_acceptance_checkbox_error() {
    $mytext = __('You need to confirm your agreement with the delivery terms.', 'woocommerce');

    if ( empty( $_POST[ 'acceptance_checkbox' ] ) ) {
    wc_add_notice($mytext, 'error' );
    }

    }

    Спасибо разрабам плагина WPML, всего лишь 3 часа ушло на добавление пары строк текста Т_Т

Просмотр 1 ответа (всего 1)

Тема «Как перевести кастомный чекбокс WPML» закрыта для новых ответов.