Ответы пользователя по тегу WordPress
  • Woocommerce: возможно ли использовать несколько значений атрибута в одной вариации?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Решал подобный вопрос...Только у меня была кожа (много видов кожи + у каждой кожи куча своих цветов+ у каждого вида цена менялась в зависимости от тиража, а фото материала менялось в зависимости от цвета)...

    Как я решил эту проблему...Сначала долго перепиливал вукомерс, но....Около 20 видов материала х 40 и более цветов(а у каждого материала свой цвет, т.е красный одного материала != красному другого материала)=800 вариаций...А еще и тираж....Вобщем жесть, пришлось от Woocommerce отказаться...С какой-то стороны мне было проще, подразумервалось, что клиент будет заказывать только одно изделие, и, соответственно функционал корзины корзины и страницы чекаута писать не пришлось...

    Что я сделал. Сначала создал кастомный тип записей (назовем его, скажем, продукт)...
    Понятно, что категории, метки, теги и т.д, создавать надо тоже....Затем через ACF повторитель задал нужные атрибуты, связаные друг с другом...Т.е у каждого материала у меня были свои цвета и тиражи...

    Повторяю, это только потому, что цвета у каждого материала у меня отличались!!!! Если они одинаковые, скорее всего можно сделать намного проще!!!

    Пол дела сделано. Затем создат тип шаблона, который применял к нужным мне страницам (продуктам). В шаблоне продукта написал вывод первого повторителя (материалы). По клику на материал срабатывает Ajax запрос, который получал данные из дочернего повторителя в functions.php. А затем передавал обработанные данные в шаблон и строил отображение остальных переключателей (цвет и тираж).
    Затем нужные мне данные передавались в скрытые поля формы и после заполнения данных клиента отправлялись куда надо (письмо с данными администратору и клиенту)...ъ

    Как то так...У меня был такой опыт, может он вам чем помочь сможет, или на мысль натолкнуть..6153684867cb7424785519.jpeg
    Ответ написан
    Комментировать
  • Подойдёт ли Woocommerce для создания Классифайд проекта на Wordpress?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Можно и на Вуомерс, но, в принципе, если немного покодить, то большинство ваших запросов решается через Wordpress, ACF и произвольные типы записей (посты и таксономии).
    1) Каталог сущностей (типы записей и таксономии) - https://wp-kama.ru/function/register_post_type
    2) Свой набор атрибутов - ACF - https://acfwp.ru/category/documentation/
    3) Фильтрация атрибутов. Как сделать такой фильтр ( wordpress + acf )? Есть ли готовый фильтр записей по доп полям ( плагин Advanced Custom Fields) для Wordpress?
    Здесь можно много нафантазировать. Либо вообще через AJAX сделать фильтр.
    4) Список избранного - Как реализовать добавление постов в избранное WordPress? либо самому написать аналог
    5) Личный кабинет. Здесь сложнее, но...Можно взять нечто вроде WP-RECALL(или любой другой плагин личного кабинета пользователя), и используя его за основу переписать под себя...
    Вобщем, мороки много будет и если вы сделаете его на Вукомерс (так как процентов 90 функций вам оттуда нужно будет вырезать, а выигрыш, по сути, только в новом типе записи, таксономиях и, может быть, некотором количестве готовых плагинов, которые все равно придется под себя переписывать). В случае Вордпресс+ACF планировать архитектуру вашего сайта будете дольше, но он будет легче (хотя здесь тоже субъективно).
    Хотя я бы Вукомерс не использовал, а там вам виднее.
    Ответ написан
    Комментировать
  • Как на странице архива WooCommerce текст переметить вниз?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Сделайте, как и написал Антон
    remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
    add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_description', 100 );

    Добавляете в functions.php
    Ответ написан
    Комментировать
  • Как подставить значения в select cf7?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Была у меня похожая задача. Мне надо было из формы на странице передать значение в форму в модальном окне (правда, там текстовый инпут, но в принципе, похоже) Как я сделал.
    1) На странице разместил форму из одного инпута с сабмитом (в вашем случае, как мне кажется, через js свяжите свою кнопку услуги и скрытую форму)
    2) Передал значение в переменную и отправил ее в модальное окно, предварительно его открыв

    <?php $link = $_GET['website_name'];?>
    - website_name - это форма, с которой передавал значение
    <script type="text/javascript">
    $('.openlink').click(function(){
      $('[name="text-316"]').val($('#page_website_form [name="website_name"]').val());
    });
    $(".openlink").click(function(){
    		document.getElementsByClassName('black')[0].style.display = 'block';
    	});
    </script>

    - [name="text-316"] - инпут, в который передается значение
    - #page_website_form [name="website_name"] - откуда передается значение.
    А вторая функция для открытия окна ( добавляет style.display = 'block' к модалке)
    Вот наподобие и попробуйте
    Ответ написан
    5 комментариев
  • Как сделать отдельную страницу для комментариев на Woocommerce?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Имеются в виду отзывы к товарам? Из плагинов отзывов в woocommerce мне вспоминается TWB Woocommerce Reviews. Там вроде такой функционал есть (через шорткоды). Он хоть и старенький, но вроде еще работает на актуальной версии Woocommerce
    Ответ написан
    1 комментарий
  • Как сделать фильтр по аттрибутам в woocommerce?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Попробую вам на конкретном примере (делал для одного проекта) показать, то что хотел сказать WP Panda (если я правильно понял).
    1) Сделайте форму, через которую пользователи будут выбирать нужные атрибуты (у меня этот фильтр был написан на основе формы для поиска)
    <form role="search" method="get" class="woocommerce-product-search" name="s" 
          action="<?php echo esc_url(home_url('/')); ?>">
        <input style="display: none;" type="search"
               id="woocommerce-product-search-field-<?php echo isset($index) ? absint($index) : 0; ?>"
               class="search-field"
               placeholder="<?php echo esc_attr__('Search products&hellip;', 'woocommerce'); ?>" value=""
               name="s"/>
        <div class="search_title">
            Фильтр по параметрам шин
        </div>
        <div class="row s-fast-search__row justify-content-center">
            <div class="col-md-12">
                <?php
                $diametr = wp_dropdown_categories("taxonomy=pa_diametr&echo=0&show_option_none=Все внутренние диаметры шин&name=diametr");
                ?>
                <label>Выберите внутренний диаметр шины</label>
                <div><?php echo $diametr; ?></div>
            </div>
            <div class="col-md-12">
                <?php
                $razmer = wp_dropdown_categories("taxonomy=pa_razmer&echo=0&show_option_none=Все размеры&name=razmer");
                ?>
                <label>Выберите размер</label>
               <div> <?php echo $razmer; ?></div>
            </div>
    
    
            <div class="col-md-12">
    		<?php $dropdowncats = wp_dropdown_categories(
            'hide_empty=0&depth=1&orderby=name&order=ASC&selected='.$_GET['product_cat'].'&hierarchical=1&echo=0&taxonomy=product_cat&show_option_none=Все категории'
    ); ?>
                <label>Категории</label>
    <div><?php echo $dropdowncats; ?></div>
            </div>
        </div>
        <!--row-->
        <button type="submit" class="filtr_search_button"
                value="<?php echo esc_attr_x('Search', 'submit button', 'woocommerce'); ?>">Искать
        </button>
        <input type="hidden" name="post_type" value="product"/>
    </form>

    2) Добавьте обработчик этого всего в functions.php
    //Для формы фильтра на главную страницу
    add_action('pre_get_posts', 'search_by_cat');
    function  search_by_cat() {
        global $wp_query;
    
        if (is_search()) {
    
            $diametr =  intval($_GET['diametr']);
            if($diametr>0){
                $wp_query->query_vars['tax_query'][] = array( //для атрибутов товаров
                    "taxonomy" => "pa_diametr",
                    "field" => "id",
                    "terms" =>  $diametr
                );
            }
    
            $razmer =  intval($_GET['razmer']);
            if($razmer>0){
                $wp_query->query_vars['tax_query'][] = array(
                    "taxonomy" => "pa_razmer",
                    "field" => "id",
                    "terms" =>  $razmer
                );
            }
    
    
    
    		$cat =  intval($_GET['cat']);
    
            if($cat<0){
                $wp_query->query_vars['product_cat'] =  '';
            }else{
                $term = get_term_by('id',$cat,'product_cat');
                $wp_query->query_vars['cat'] = '';
                $wp_query->query_vars['product_cat'] =  $term->slug;
            }
        }
    }
    //Для формы фильтра на главную страницу - конец


    Код скопировал целиком, понятно что у вас будут свои атрибуты
    Ответ написан
    2 комментария
  • Как перенести вниз описание главной страницы магазина Woocommerce?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Для категорий и подкатегорий работает этот хук
    remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
    add_action( 'woocommerce_after_shop_loop', 'woocommerce_taxonomy_archive_description', 100 );

    Должно и для главной работать, как и написал WP Panda

    P.S. На самый крайний случай, посмотрите к какому хуку можно привязать свою функцию (https://businessbloomer.com/woocommerce-visual-hoo...
    и напишите нечто вроде
    add_action( 'woocommerce_single_product_summary', 'my_theme_my_action', 41 );
    function my_theme_my_action() { 
      echo '<div class="">Код какой нужно вставить</div>';
    }


    где woocommerce_single_product_summary нужно заменить нужным хуком (данный отвечает за расположение на странице товара, 41 - позиция)

    PPS. А если выводить этот текст надо только на главной, сделайте проверку по ИД страницы
    Ответ написан
    3 комментария
  • Можно ли связать языковые домены?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Можно такой вариант попробовать:
    1) В шапку сайта вставить
    <?php
    $Path=$_SERVER['REQUEST_URI'];
    $URI_RU='http://ru.test'.$Path;
    $URI_ES='http://es.test'.$Path;
    $URI_EN='http://test'.$Path;
    ?>


    2) Там где нужно, вставить переключатель языка
    <a href="<?php echo $URI_ES ?>">ES</a>
    <a href="<?php echo $URI_RU ?>">RU</a>
    <a href="<?php echo $URI_EN ?>">EN</a>


    3) Единственный, но огромный ньюанс!
    URL страниц и товаров должны быть одинаковые, иначе будет 404.
    Что я имею в виду.
    Страница товара, к примеру
    - на англ версии test/product/nazvanie-tovara
    - на рус версии ru.test/product/nazvanie-tovara
    - на исп версии es.test/product/nazvanie-tovara
    Т.е слаг nazvanie-tovara должен быть для всех версий вашего сайта одинаков.
    Ответ написан
  • Woocommerce как настроить оформление категории товаров?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    1) Быстрый просмотр можно реализовать с помощью плагина, например YITH WooCommerce Quick View, а потом стилизировать его кнопку(Быстрый просмотр), как надо:
    2) Характеристики товара (атрибуты и т.д), можно вывести через functions.php
    Например
    function my_template_loop_product_title(){
        global $product;
        echo '<h3 itemprop="name" class="product_title entry-title">';
        $versionvalues = get_the_terms( $product->id, 'pa_model');
     
        foreach ( $versionvalues as $versionvalue ) {
             echo $versionvalue->name;
        }
        echo '</h3>';
    }
    add_action( 'woocommerce_shop_loop_item_title', 'my_template_loop_product_title', 10 );

    Здесь есть pa_model, где model - слаг вашего атрибута, который вы хотите вывести;
    3) По поводу видимости элементов при наведении.
    Можно попробовать реализовать таким образом:
    а) В обычном состоянии элементам, которые надо скрыть пропишите display: none;
    например, .product_wrapper .product {display: none}, где .product_wrapper - родительский элемент, а .product - дочерний (тот, который находится внутри блока).
    б) В состоянии наведения (как у вас на скрине) надо отобразить нужные элементы, которые ранее были скрыты :hover {display: block;}
    Например, .product_wrapper .product:hover {display: block;}
    в) Можно еще и анимацию появления прописать (в инете много статей по этому поводу есть, смотрите css 3 анимация)
    Уточню только что классы .product_wrapper и .product я написал для примера, у вас могут быть другие)
    Ответ написан
    4 комментария
  • Как сделать кнопку сброса фильтров товаров в Woocommerce?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Держи такой вариант
    1) Это вставишь в шапку сайта
    <?php $filterreset = $_SERVER['REQUEST_URI'];
    $filterreset = strtok($filterreset, '?'); ?>

    2) А кнопку сброса где-нибудь в шаблоне, там где надо
    <a href="<?php echo $filterreset; ?>">Сбросить фильтр</a>
    Ответ написан
    Комментировать
  • Как добавить доп информацию в товар woocommerce?

    MaximusDem
    @MaximusDem
    Начинающий разработчик
    Можно через дополнительные поля, можно через function.php
    add_action( 'woocommerce_single_product_summary', 'my_theme_my_action', 41 );
    function my_theme_my_action() { 
      echo '<div class="">Код какой нужно вставить</div>';
    }

    'woocommerce_single_product_summary' - место, где вывести ваш код
    41 - позиция
    "Код какой нужно вставить " - переменные, где вы задаете данные ваших витаминов и т.д.
    З.Ы. Сильно не пинайте, сам еще неопытный)
    Ответ написан
    6 комментариев