• Как работать с данными плагина на Wordpress?

    Плагин - это "творение" рук конкретных разработчиков. По сути, что они туда заложили, тем мы и пользуемся.
    Если разработчики плагина заложили в него возможность "вытаскивать" данные, соответственно, это описано в документации к плагину, есть некий API, хуки, и тогда вы можете их использовать. Если такой возможности разработчиками плагина не заложено - тогда нет. Все зависит от плагина, и что в него заложено.
    Ответ написан
    2 комментария
  • Как менять значение при разном размере экрана?

    Можно получать текущую ширину окна или документа, например, если с шириной окна -

    let responsiveUnder = 1000;
    if ( window.screen.width < 900 ) {
            responsiveUnder = 900;
         // ...
    }


    далее, передаете в слайдер переменную responsiveUnder...
    Ответ написан
    1 комментарий
  • Как добавить доп. валюты в Woocommerce?

    В корзине и заказе woo будет работать с основной валютой.
    Не совсем понятно - Вы хотите просто поменять символ или используете вторую валюту для cars?
    Ответ написан
  • Как передать ссылку на отдельную страницу?

    В роутере у вас правильно -
    path="/products/:id"

    А в Link должно быть что-то такое -
    Link to=`products/${id}`

    То есть, в Link нужно передать реальный id продукта. Например из props.match.params.id
    Ответ написан
    Комментировать
  • Продажа билетов с выбором места в театре. (wordpress, woocommerce)?

    WP , как платформа - может быть да, но не факт, что лучший выбор, именно под вашу задачу.
    Woocommerce, как система для онлайн-бронирования - тоже самое.

    Копать нужно примерно в такую сторону -

    Сначала понять, какой будет структура данных.

    Что есть - залы, места, фильмы, сеансы, билеты (проданные товары), покупатели.

    Каждое из перечисленного будет обладать набором атрибутов (свойств):

    Зал - название (большой, малый...) и некая конфигурация, описывающая его размер и места. Например 15х20 - это 15 мест, на 20 рядов. Еще как-то нужно учесть проходы, недоступные места и т.д.

    Фильм - название, картинка, ссылка на трейлер, описание, страна, жанр, год, возраст ограничения ...

    Сеанс - скорее всего здесь будет связь с залом и фильмом, дата/время, цена. Цена на разные сеансы может отличаться (дневной, вечерний...).

    Билет - это номер ряда и места в конкретном зале, дата/время бронирования или продажи, сумма, и какая-то привязка к покупателю. Также, здесь будет некий статус - забронирован, продан... Тогда еще нужна какая-то связь с местами в зале, чтобы отмечать забронированные и проданные. Причем, бронирование нужно иметь возможность отменить.

    Далее, нужно понять, как это наложить на WP и WC.

    В WP есть базовая "единица хранения" данных - post (запись). У записи - базовый набор атрибутов: заголовок, картинка, текст, анонс, выбор категорий, теги, галерея. На основе базовой записи в WP можно создавать собственные типы - Custom Types. Собственные атрибуты создаются с помощью метабоксов.

    То есть, базовых возможностей записи вам точно не хватит. Так же как и товара в магазине.

    Товар в woocommerce, это тот-же custom type со своим набором атрибутов - цена, артикул и т. д. Чтобы использовать "механику" woocommerce, нужно, чтобы продаваемые билеты стали товарами. Атрибутов билета, которых не будет хватать, можно добавлять к товару.

    Еще, я бы посмотрел, как организовать корзину. По сути, товар в корзине - это забронированный билет. То есть, такой товар уже никто не должен положить в корзину, кроме меня. Потому, что пока я положил в корзину, потом пошел чаю попить, за это время еще пять человек также положили в корзину или купили тот-же билет. Будет куча накладок. А стандартная корзина по другому не "умеет"...

    Думаю, также нужно понять, как будет онлайн-оплата. И от этого идти, в отношении магазина. Если вы перенаправляете на платежную систему, что скорее всего, то магазин может быть и не нужен. Оплату реализовать с api платежной системы. ...

    и т.д....
    Ответ написан
    Комментировать
  • Как сделать нормальное оформление заказа woocommerce?

    В Woo оформление заказа устроено так -

    у вас есть страница "Оформление заказа", на которую с помощью шорткода [woocommerce_checkout] выводится компонент checkout. Это вы можете увидеть, открыв в админке данную страницу.

    Компонент checkout "собирается" из нескольких php файлов. Они находятся в каталоге плагина - /wp-content/plugins/woocommerce/templates/checkout. Файлов более 10 шт., каждый из которых отвечает за свою "задачу"

    То, как у вас выводятся поля данных, в каком порядке и в каком составе, нужно править в одном или нескольких файлах. В вашем случае нужно смотреть файлы form-billing.php и form-checkout.php. Возможно еще какие-то, бывает по разному.

    Важно! В самом каталоге плагина файлы не правим! . Они могут быть переписаны при обновлении плагина. Да и вообще так не принято делать. Нужно в корне вашей темы создать каталог woocommerce, в нем подкаталог checkout и в него скопировать файлы из /wp-content/plugins/woocommerce/templates/checkout. И уже там править.

    Как и что править конкретно - тут вопрос всегда индивидуальный. Поэтому, сложно сказать, есть ли плагин под вашу задачу. Обычно это делаем вручную.
    Ответ написан
    Комментировать
  • Почему после успешной оплаты юкасса, при получении Notification выдается ошибка?

    Если начать с самого простого, то я бы посмотрел тут -

    <input class='' type="fio" name="fio" required placeholder="Ваше ФИО"><br>


    Нет такого type fio. Поменяйте на type="text" и попробуйте что получится.
    Ответ написан
  • Как отредактировать HTML блок, который содержит переменная в JS?

    Вместо переменной, которая возвращает html-блок, можете создать функцию, которая будет возвращать тот-же блок, а в аргументы функции передавайте значения для классов. Для html используйте шаблонную строку -
    https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Примерно так -

    function getMyHTML(className) {
       return `<td class="${className}">...</td>`;
    }
    
    const my_html = getMyHTML("flags");
    Ответ написан
    Комментировать
  • Как вывести в консоль функцию?

    уберите console.log() за пределы функции и вызовите так -

    console.log( getRandomInclusive( 5, 10 ) )
    Ответ написан
    4 комментария
  • Как настроить несколько валют в Woocommerce?

    Вариантов реализации может быть несколько. Разница будет в том, какие хуки вы будете использовать. И для каких товаров, простых или вариативных.

    По дефолту цена у вас одна, и в карточке товара поле для цены одно. В нем вы храните цену в "родной" валюте.

    Поэтому, в целом, вам нужно:

    Для хранения второй цены добавить "кастомный" input в карточку товара в админке (тоже самое для третьей цены, четвертой и т.д.). Это можно сделать с помощью хука woocommerce_product_options_general_product_data, также, можно попробовать хук save_post.

    Нужно добавить сохранение нового поля в БД - для этого подойдет хук woocommerce_process_product_meta
    После этого у вас в админке будет выводиться поле и оно будет сохраняться.

    Далее -

    Вывести в интерфейс поле со второй ценой у товаров определенной категории (Second). Для этого придется написать некоторую логику, например - if (in_category('Second')) {...вывести вторую цену...}.

    Также вам нужна логика, чтобы правильно обработать ситуации, когда у вас одна цена === 0, вторая !== 0, обе цены !== 0 и т.д. То есть, придумать, как WC должен понять какую цену выводить, если цена === 0 или null.

    Еще один момент - обработка второй цены в корзине. По дефолту WC не сможет "понять", что ваш кастомный input - это цена. Для того, чтобы добавить в корзину что-то "неродное", подойдет хук woocommerce_before_calculate_totals.

    Код примерно такой:

    1. Добавляем "кастомный" input (в functions.php или в другой скрипт, в котором у вас собрана логика WC):

    add_action('woocommerce_product_options_general_product_data', 'add_custom_price_usd');
    function add_custom_price_usd() {
    	
            echo '<h3>Цена в долларах</h3>';
    	
    	woocommerce_wp_text_input(
            array(
                'id' => 'price_usd',
                'placeholder' => 'Цена в долларах',
                'label' => __('Цена в долларах', 'my-text-domain'),
                'desc_tip' => 'true'
               )
    	);
    }


    2. Добавляем хук для сохранения второй цены:

    add_action('woocommerce_process_product_meta', 'save_custom_price_usd');
    function save_custom_price_usd( $post_id ){
    
    	$price_usd_field = $_POST['price_usd'];
    	update_post_meta($post_id, 'price_usd', esc_html($price_usd_field));
    
    }


    3. Добавляем "обработку" второй цены в корзине:

    add_action( 'woocommerce_before_calculate_totals', 'set_custom_price_usd_to_cart', 10, 1 );
    function set_custom_price_usd_to_cart( $cart ){
            if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        	    return;
    
    	if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
    	    return;
    
    	foreach ( $cart->cart_contents as $key => $value ) {
                if ( ... проверяем, принадлежит ли товар категории Second... ) {
                    /* если да - меняем цену */
                    $value['data']->set_price(... цена в долларах...);
                }
            }
    }


    Здесь внутри foreach код может быть разный, так как не известно, каким образом вы будете получать цену и добавлять ее в корзину. Реализация зависит от вашего кода. Поэтому я описал общий принцип.

    4. Выводим вторую цену в интерфейс - поскольку цену мы сохранили как метабокс, то в интерфейсе получаем ее по id товара с помощью get_post_meta() :
    get_post_meta( $product->get_ID(), 'price_usd', true );


    Ваша конкретная реализация может отличаться. Для вариативных товаров немного по другому, но в целом, шаги будут такие-же.
    Ответ написан
    2 комментария