Задать вопрос
  • Как сохранить выбранный option у select при перезагрузке страницы?

    irtek
    @irtek
    Wordpress-addicted
    После перезагрузки страницы всё приложение на Vue обновится, соответственно вам необходимо постоянное временное хранение для состояния этого селекта и возможно других данных.

    Самое простое без участия бэкэнда это можно организовать средствами браузера в localStorage. У него есть методы setItem и getItem куда вы можете сохранять строку. Это может быть значение конкретного селекта или объект с разными временными данными, которые необходимы для вашего приложения. Перед сохранением в localStorage не забудьте пропустить объект через JSON.stringify перед сохранением в localStorage, т.к. там можно хранить только строки.

    Также при загрузке вашего кода на Vue вам нужно в onMounted вашего компонента прописать проверку если есть данные в localStorage то брать их и устанавливать селект в нужное положение. Если ранее вы сохраняли JSON строку, то необходимо после получения данных из localStorage их распарсить через JSON.parse
    Ответ написан
  • Как задать плавное появление блока?

    irtek
    @irtek
    Wordpress-addicted
    Добавить

    visibility: hidden / visibility: visible

    И еще можно использовать свойство pointer-events: none;

    Оно отменяет "рабочесть" блока (на него нажать, выделить и т.п.)
    Ответ написан
    Комментировать
  • Почему у меня получается объект с неверными ключами?

    irtek
    @irtek
    Wordpress-addicted
    Вам нужно обработать получаемый массив от serializeArray

    const detailsData = $('form').serializeArray()
    
    let details = {};
    for (let i = 0; i < detailsData.length; i++) {
        details[detailsData[i]['name']] = detailsData[i]['value'];
    }
    
    var formData = {
        'details': details,
        'items': JSON.parse(Cookies.get('basket')),
        'visitor': <?php echo (!empty($visitor)) ? json_encode($visitor) : null; ?>
    };
    
    console.log(formData);
    Ответ написан
    1 комментарий
  • Ошибка в gulpfile.js, как решить?

    irtek
    @irtek
    Wordpress-addicted
    У вас установлен gulp версии 4, а код, который вы запускаете устаревший и написан для версии 3. Там другой синтаксис и архитектура для запуска задач (tasks) была.
    Ответ написан
    8 комментариев
  • Почему не роботает Slick?

    irtek
    @irtek
    Wordpress-addicted
    Так у вас опечатка. Вместо "type" "src" должно же быть в третьей строке, где подгружаете main.js
    У вас код запуска слайдера не грузится.

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
    <script src="js/slick.min.js"></script>
    <script src="js/main.js"></script>
    Ответ написан
    1 комментарий
  • Как правильно добавить папку в исключение GitHub?

    irtek
    @irtek
    Wordpress-addicted
    Если эта папка с файлами ранее была добавлена в репозиторий, то после добавления ее в .gitignore нужно удалить эти файлы из индекса git командой

    git rm --cached .lh/ -r
    Ответ написан
    1 комментарий
  • Почему не работает смена темы на сайте?

    irtek
    @irtek
    Wordpress-addicted
    Первый момент, в пути к файлу нужно использовать обратный слеш "/", соответственно в html нужно обновить адрес в строке
    <link rel="stylesheet" href="css/main.css" id="theme1">


    Второй момент, атрибут правильнее присваивать через метод setAttribute нежели напрямую присваивать через "="

    let switchMode = document.getElementById("theme");
    
    switchMode.onclick = function() {
        let theme = document.getElementById("theme1");
    
        if (theme.getAttribute("href") === "css/main.css") {
            theme.setAttribute("href", "css/main_dark.css");
            console.log(1);
        } else {
            theme.setAttribute("href", "css/main.css");
            console.log(0);
        }
    }
    Ответ написан
  • Как вытащить все значения из json через key?

    irtek
    @irtek
    Wordpress-addicted
    В массиве images не там key стоит в функции getPictures ну и в итоге у вас по коду вы выводите одно изображение, а вам надо все?

    Предлагаю так с вашей функцией getPictures(), которая теперь формируется набор этих изображений по продукту и затем ее добавляем в шаблон вывода

    А ошибка была в этой части
    elements[key].images.length

    key у elements, а не у images

    async function getResponse() {
                let response = await fetch('https://dummyjson.com/products')
                let jsonList = await response.json()
                let list = document.querySelector('.products')
                let key
                let elements = jsonList.products
                elements = elements.splice(0, 3)
    
                for (key in elements) {
                    function getPictures() { //вывод ключей на картинки
                        let images = ''
                        for (let i = 0, length = elements[key].images.length; i < length; i++) {
                            images += `<img src="${elements[key].images[i]}" alt="${elements[key].description}" />`
                        }
                        return images
                    }
                    list.innerHTML +=
                        `<li class="item">
                          <h5 class="small_panel">${elements[key].title}</h5>
                              <div class="full_panel">
                                  ${getPictures()}
                                  <p>brand: ${elements[key].brand}</p>
                                  <p>category: ${elements[key].category}</p>
                                  <p>${elements[key].description}</p>
                                  <p>discount percentage: ${elements[key].discountPercentage} %</p>
                                  <p>price: ${elements[key].price} usd</p>
                                  <p>rating: ${elements[key].rating}</p>
                                  <p>stock: ${elements[key].stock}</p>
                          </div>
                      </li>`
                }
            }
    
    
            getResponse()
    Ответ написан
    Комментировать
  • Как исправить ошибку в php?

    irtek
    @irtek
    Wordpress-addicted
    Поставьте, после вашего блока кода

    <?php wp_reset_postdata(); ?>
    Ответ написан
    Комментировать
  • KNOB, получение значения?

    irtek
    @irtek
    Wordpress-addicted
    Обновите код на Codepen в блоке html на этот.

    <!DOCTYPE html>
    <html>
    
    <head>
      <meta charset="utf-8">
      <title>123</title>
    </head>
    
    <body>
      <input type="number" id="input">
      <span id="btn" onclick="btn()">Подтвердить</span>
    
      <div class="timeProgress">
        <input value="0" class="CNF">
        <h3><span id="result">0</span>/3</h3>
      </div>
    
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
      <script src="https://website-about.neocities.org/arcana/knob/jquery.knob.min.js"></script>
      <script type="text/javascript">
        let result_txt = document.getElementById('result');
    
        function btn() {
          var value_input = document.getElementById("input").value;
    // Меняем значение кноба и инициализируем (trigger) перерисовку
          $('.CNF')
            .val(value_input)
            .trigger('change');
          result_txt.innerHTML = value_input;
        }
        $(document).ready(function() {
          $(".CNF").knob({
            'min': 0,
            'max': 3,
            'readOnly': true,
            'width': '100%',
            'thickness': 0.2,
            'displayInput': false,
            'bgColor': 'lightskyblue',
            'fgColor': 'navy',
            'angleOffset': 0,
            'angleArc': 360
          })
        })
      </script>
    </body>
    
    </html>


    Обращаю ваше внимание, что лучше не мешать нативный JS с JQuery. Читать менее удобно. Если вы уже подключили jQuery то лучше использовать его синтаксис для получения элементов, вдобавок он короче и приятнее и не мешать с нативными getElementById и т.п.

    И в Codepen правильнее подключать JS библиотеки в блоке JS, там где "шестеренка" настроек. и весь JS код вставлять в блок JS

    Почистил ваш вариант под Codepen и перевел код для jQuery (функция нажатия кнопки перенесена в код JS)
    Codepen
    Ответ написан
    1 комментарий
  • Как полностью отключить черновики auto-draft и draft в WordPress?

    irtek
    @irtek
    Wordpress-addicted
    Вы отключаете Revisions, т.е. версии поста, которые по умолчанию сохраняются каждые 60 секунд, но auto-draft Черновики создаются всегда.

    Обычный черновик, который можно отключить это статус "draft", т.е. когда вы сохранили пост как Черновик, а "auto-draft" это автоматически создаваемая временная запись каждый раз при создании нового объекта поста/страницы.

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

    Также и в архитектуре WordPress когда вы создаете Запись или Страницу создается auto-draft до момента его публикации или того же сохранения фиксации как draft черновик. Чтобы подчистить за собой черновик нужно выполнить какую-то функцию, а если у вас отключился интернет или вы закрыли браузер? Это не проконтролировать. Поэтому запись auto-draft останется в любом случае.

    Чтобы избавиться от auto-draft записей в базе в WordPress есть функция wp_delete_auto_drafts() которая удалит все auto-draft строки для Записей/Страниц старше 7 дней

    Вы можете эту функцию регулярно вызывать, чтобы чистить базу от лишних записей auto-draft черновиков.
    Только НЕ добавляйте эту функцию просто в файл functions.php, т.к. если она будет вызываться каждый раз при открытии сайта это значительно снизит производительность. Укажите какое-либо условие запуска для нее, например, когда заходит админ раз в 3 дня и т.п. либо посмотрите тему с CRON и повесьте регулярную чистку каждые 7 дней.

    Можете также сделать удаление auto-draft черновиков хоть каждые 10 секунд хоть при каждом открытии админки SQL запросом если критично взяв код запроса из функции
    https://developer.wordpress.org/reference/function...
    или если Запись никто не редактировал 1 час или при выходе из админки и т.п. варианты.
    Ответ написан
    Комментировать
  • Обязательно ли использовать script setup в VUE3?

    irtek
    @irtek
    Wordpress-addicted
    То, что вы называете это новый Composition API введенный в Vue 3. Новый альтернативный синтаксис. Можете его не использовать, а продолжать писать по схеме Options API. Код Vue 2 совместим с Vue 3. В документации вы по прежнему можете переключаться между этими синтаксисами и продолжать писать как вам удобно. Изменения при переходе на Vue 3 коснутся сборщика и функций в основном компоненте App
    Ответ написан
    1 комментарий
  • Как из хлебных крошек удалить название товара woocommerce?

    irtek
    @irtek
    Wordpress-addicted
    Например таким кодом, добавленным в functions.php темы

    add_filter( 'woocommerce_get_breadcrumb', 'remove_product_name_from_breadcrumb' );
    
    function remove_product_name_from_breadcrumb( $breadcrumb ) {
    	
      if( is_product() ){
    		array_pop( $breadcrumb );
    	}
      
      return $breadcrumb;
    }
    Ответ написан
    Комментировать
  • Как проверить, что элементы с атрибутом required заполнены?

    irtek
    @irtek
    Wordpress-addicted
    Каждое содержание таба нужно обернуть, например в блок с ID атрибутом

    <div id="tab_1">
    ...
    
    <button id="tab_1_submit">Перейти к табу 2</button>
    </div>
    <div id="tab_2">
    ...
    
    <button id="tab_2_submit">Перейти к табу 3</button>
    </div>


    Далее на кнопки внутри каждого таба вешаете событие 'click', в котором проверяете есть ли значения у всех required элементов

    Если через JS в первом табе получаете список обязательных полей так

    const requiredFields = document.getElementById('tab_1').querySelectorAll('[required]')


    Если через jQuery в первом табе получаете так

    const requiredFields = $('#tab_1 [required]')

    Проходите по спискам и проверяете заполненность полей

    Получается, что из radio он находит только первый пол мужской, а элемент женский не читает, хотя он тоже считается required.
    Нужно, чтобы он проверял любой пол.


    Так и будет, т.к. поля у вас объединены общим name="gender", а атрибут required достаточно повесить на первое поле.
    Ответ написан
    1 комментарий
  • Правильно ли я упростил коллбэк через стрелочную функцию?

    irtek
    @irtek
    Wordpress-addicted
    every() это метод, а не функция, поэтому его нужно применять к объекту/массиву.
    Поэтому браузер ругается на отсутствие функции every.

    const result = [1, 2, 3, 4, 5].every(elem => elem > 0)
    console.log(result)
    Ответ написан
    Комментировать
  • Как сделать mysql запросы для замены сериализованных ссылок?

    irtek
    @irtek
    Wordpress-addicted
    Какая именно задача?

    Если найти в сериализованных полях какую-то ссылку или блок текста и заменить, то можно просто воспользоваться поиском и заменой в MySQL простым SQL запросом:

    table - название таблицы
    field_name - колонка

    UPDATE `table` SET `field_name` = replace(field_name, 'http://site1.ru', 'http://site2.ru')


    (!) все операции с БД выполняйте только после того как сделаете бэкап (!!!)

    Второй вариант через скрипт
    Если надо что-то сделать с данными, то можно написать простой скрипт на php, который выполнит эту операцию, предварительно проведя десериализацию данных, выполнив с ними операцию и затем опять обновив в БД.
    Если речь о WordPress, то можно получить все мета поля ( притом функция get_post_meta() автоматически десериализует данные при получении из БД ), затем провести с ними операцию, а затем обратно update_post_meta и так хоть тысячу полей.
    Ответ написан
    3 комментария
  • Как правильно настроить .htaccess один урл со / другой без?

    irtek
    @irtek
    Wordpress-addicted
    Добавить исключение (предпоследняя строка), кажется так:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !\..+$
    RewriteCond %{REQUEST_URI} !/$
    RewriteCond %{REQUEST_URI} !^/wp-json/rankmath/v1/saveModule
    RewriteRule (.*) https://site.ru/$1/ [R=301,L]
    Ответ написан
    Комментировать
  • Откуда кавычка в начале названия страницы WP?

    irtek
    @irtek
    Wordpress-addicted
    Функция wp_title() по умолчанию добавляет перед заголовком знак двойных кавычек. Это регулируется первым аргументом.

    Вызовите функцию с первым аргументом пустой строкой и значка не будет
    wp_title( '' );

    https://developer.wordpress.org/reference/function...

    Либо примените фильтр 'wp_title_parts', чтобы убрать этот значок во всех функциях wp_title по всему сайту
    Ответ написан
    Комментировать
  • Как получить значение после fetch-запроса?

    irtek
    @irtek
    Wordpress-addicted
    Если у вас идея обработчик ответа оставить внутри модуля, то в первом файле меняете на

    const fetch = require('node-fetch');
    
    module.exports = async () => {
      return fetch(URL, {
        method: 'POST',
        headers: {
          'Content-Type': 'application/xml'
        }
      })
        .then((res) => {
          return res
        })
    }

    т.е. вы должны экспортировать асинхронную функцию, которая возвращает ответ и в ней уже можете сделать свои обработчики результата.

    А в результирующем файле просто выводите результат в then, ожидая результат выполнения асинхронной функции, которую получили:

    const postRequest = require('./postRequest');
    
    postRequest()
      .then(function (res) {
        console.log(res);
      })
    Ответ написан
    7 комментариев
  • Почему не работает post__in в query_posts?

    irtek
    @irtek
    Wordpress-addicted
    Строка с запятыми это не массив, поэтому у вас она приводится только к первому значению. Чтобы эту строку превратить в массив замените первую строку на

    $first_five = explode( ',', get_field( 'first_five',  'option' ) );
    Ответ написан
    2 комментария