• 13 гб Бекап файл, стоит ли пробовать его залить?

    Я бы сделал бекап НЕ плагином, а вручную:

    1) отдельно базу данных (она не будет весить много, максимум 20-50 Мб для такого магазина, лучше сразу в gzip - выйдет еще меньше, обычно до 10 Мб).
    2) отдельно архивировал бы файлы - и при этом смотрел, чтобы какие-то старые архивы, или ненужные папки не попали в новый.

    В магазине больше всего тянут картинки, но даже для 3000 товаров 13 Гб - многовато, если в среднем брать по 300Кб на картинку и 5 картинок на товар, то =3000*5*300/1024/1024 = около 4 Гб.
    Ну система еще 1 Гб накинем за глаза, итого 5 Гб
    Видимо попал какой-то мусор туда, или картинки залили неоптимизированные, или много форматов картинок автоматически создается в wp, или какой-то мусор захватывается.
    Поэтому файлы я бы архивировал тоже вручную и смотрел - что там тянет больше всего.
    Если всё же картинки, и нельзя их оптимизировать и удалить лишние, то просто их бы не бекапил, какой смысл... бекап важен для программных файлов, шаблона и базы данных, чтобы быстро откатиться назад, если что-то пошло не так. Изображения можно оставить в стороне.

    В этом случае у вас получится база данных на 10 Мб + система и шаблон на 300-500 Мб.
    И обновляйтесь.
    Ответ написан
    1 комментарий
  • Как выделить блоки с диапазоном id?

    zb_venom
    @zb_venom
    Жизнерадостный чебурек
    var divs = document.querySelectorAll('.catalog-flex.catalog-block');
      divs.forEach(function(item) {
        if (parseInt(item.id) < pagmin || parseInt(item.id) > pagmax) item.style.display = "none";
      });

    Ответ написан
    1 комментарий
  • Как выделить блоки с диапазоном id?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Замените id на data-атрибут. Чтобы было не id="666", а data-val="666", например.
    Раз сравнивать значения собираетесь как числа - сделайте минимальное/максимальное значения числами изначально.

    document.querySelectorAll('селектор ваших блоков').forEach(n => {
      const val = +n.dataset.val;
      n.classList.toggle('disable', min > val || val > max);
    });
    Ответ написан
    Комментировать
  • Как передать атрибуты option в select при клике на option?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Атрибут price не является стандартным для HTML5. Лучше использовать data-атрибуты, чтобы держать какие-то данные в разметке:


    Можно и оставить разметку как в вопросе, тогда значение цены получать через option.getAttribute('price')fiddle
    Ответ написан
    3 комментария
  • Добавления товара в корзину без перезагрузки страницы и замена текста кнопки "В корзину" woocommerce?

    @krinbin
    Добавление товара без перезагрузки.

    Добавляем скрипт:

    var $warp_fragment_refresh = {
        url: wc_cart_fragments_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'get_refreshed_fragments' ),
        type: 'POST',
        success: function( data ) {
            if ( data && data.fragments ) {
    
                $.each( data.fragments, function( key, value ) {
                    $( key ).replaceWith( value );
                });
    
                $( document.body ).trigger( 'wc_fragments_refreshed' );
            }
        }
    };
    
    $('.entry-summary form.cart').on('submit', function (e)
    {
        e.preventDefault();
    
        $('.entry-summary').block({
            message: null,
            overlayCSS: {
                cursor: 'none'
            }
        });
    
        var product_url = window.location,
            form = $(this);
    
        $.post(product_url, form.serialize() + '&_wp_http_referer=' + product_url, function (result)
        {
            var cart_dropdown = $('.widget_shopping_cart', result)
    
            // update dropdown cart
            $('.widget_shopping_cart').replaceWith(cart_dropdown);
    
            // update fragments
            $.ajax($warp_fragment_refresh);
    
            $('.entry-summary').unblock();
    
        });
    });


    Меняем в шаблоне woocommerce/single-product/add-to-cart/simple.php строку
    <button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>

    на
    <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" />
    <button type="submit" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>


    Если в магазине у нас только простые товары (без вариативных), то можно сделать еще проще — установить кнопку с шаблона архива:

    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    add_action( 'woocommerce_single_product_summary', 'woocommerce_template_loop_add_to_cart', 30 );


    Чтобы изменить текст кнопки В корзину, если товар уже добавлен, используем функции:
    (правда нужно допилить что б обновлялся через ajax)

    // Change the add to cart text on single product pages
    add_filter('woocommerce_product_single_add_to_cart_text', 'woo_custom_cart_button_text');
    function woo_custom_cart_button_text() {
    	
    	foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
    		$_product = $values['data'];
    	
    		if( get_the_ID() == $_product->get_ID() ) {
    			return __('Already in cart - Add Again?', 'woocommerce');
    		}
    	}
    	
    	return __('Add to cart', 'woocommerce');
    }
    
    // Change the add to cart text on product archives
    add_filter( 'woocommerce_product_add_to_cart_text', 'woo_archive_custom_cart_button_text' );
    function woo_archive_custom_cart_button_text() {
    	
    	foreach( WC()->cart->get_cart() as $cart_item_key => $values ) {
    		$_product = $values['data'];
    	
    		if( get_the_ID() == $_product->get_ID() ) {
    			return __('Already in cart', 'woocommerce');
    		}
    	}
    	
    	return __('Add to cart', 'woocommerce');
    }
    Ответ написан
    Комментировать
  • Почему так многие не любят Bootstrap?

    @lolrofl01
    Да потому что какой смысл бутстрапа? Если юзать его только ради сетки, как делает большинство - он не нужен. Сетку можно за 3 минуты на флексе написать, а в гридах так вообще своя сетка. Если использовать ради компонентов, типа кнопки, спойлеры, слайдеры, то uikit3 имхо намного интереснее.
    Ответ написан
    Комментировать
  • Как массово поменять размеры миниатюр у всех записей WP?

    @i_sova
    Wordpress Developer
    $product_img =  $product->get_image_id();
     $image_url = wp_get_attachment_image_url( $product_img, 'full' );
    <img src="<?php echo $image_url";?>
    
    или вот таким фильтром (в functions.php)
    
    add_filter( 'subcategory_archive_thumbnail_size', function( $size ) {
      if ( function_exists( 'is_product_category' ) ) {
        return 'full';
      }
      return $size;
    } );
    Ответ написан
    Комментировать
  • Можно ли написать скрипт который будет показывать или скрывать определенные елементы в зависимости от даты?

    @Untiwe
    Изначально задаешь item-y стиль display: none;(например делаешь для этого класс стилей и называешь его invisible)

    Узнаешь время на сервере https://developer.mozilla.org/ru/docs/Web/JavaScri...

    Если время меньше нужного, ничего не делаешь. Если больше то убираешь у item-y класс invisible и добавляешь его к классу item-x
    Ответ написан
    Комментировать
  • Как такое сверстать?

    hzzzzl
    @hzzzzl
    аккуратно шаг за шагом всё стилизовать и анимировать



    итд,
    Тут просто рутина
    Ответ написан
    1 комментарий
  • Оптимизация Wordpress. Или как оставить только нужное в head?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    У тебя проблема не в очистке head, а в элементоре. Стоит выкинуть элементор и переверстать в свою ВП тему.
    Объясни это заказчику. А то что ты делаешь - экономия на спичках. Потратишь 80% времени, получишь 20% результата. 20% от 90 это сколько? Хорошо если 91 получишь. Оно того стоит?

    Все что советуют с кешами - это советы принимать ибупрофен, когда ногу оторвало и снова ибупрофен принимать и т.д.

    Прям кушать нечего - таких заказчиков держишь? Займись делом и перед продакшеном переверстай то что накидали в элементоре в своей ВП теме. Потому что элементор - для прототипирования. т.е. когда заказчик не знает какой дизайн и блоки какие ему нужны.
    Диз устаканили? Тогда занимайтесь оптимизацией: всё перенеся в свою ВП тему. Не умеешь? Учись или отдавай на аутсорс/отказывайся.
    Так как ты рассуждаешь - неверно. Сказывается отсутствие опыта - т.к. ты не понимаешь последствий дальнейшей техподдержки сайта - отключив js/css ты своему клиенту закладываешь бомбу замедленного действия. Потом это скажется на твоей репутации.
    Ответ написан
    Комментировать
  • Как можно реализовать интерактивный фильтр цен в связке с прайсом на google docs?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    В голову приходит только одна идея...
    Реализация данной задачи в несколько этапов, а именно:
    1) Парсинг данных из Google Docs и их хранение в виде JSON на вашем сервере.
    2) Далее подключаем DataTables и на одной из страниц выводим таблицу.
    3) Далее уже на клиентской стороне средствами DataTables реализуем фильтрацию

    Есть плагин для ВП использующий Datatables - TablePress, но он вам вряд ли поможет... В любом случае вопрос с парсингом данных остается открытым.
    Ответ написан
    Комментировать
  • Vue.js Калькулятор цен. Как справиться с radio кнопками?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Указывать в v-model радиокнопок следует не разные свойства, а одно и то же - в качестве значения оно будет принимать value выбранной кнопки.
    Ответ написан
    3 комментария