• Как ускорить работу с массивами?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    А что подразумевается под "обработать"?
    Выносите тяжелые вычисления в Web Worker. Это позволит распаралелить вычисления.
    Можно вынести какую-то логику в модуль webassembly.
    Можно не рисовать в графике 2000 точек. А сделать динамическую точность. Рисовать, скажем 200 точек. В заданном интервале. Пользователь зумит -- изменяется интервал -- увеличивается точность.
    Можно не рисовать все графики сразу. Например свойство content-visibility может помочь.
    Или изменить способ отрисовки графиков.
    И ещё очень много вариантов.

    Прежде чем задавать такой вопрос, стоит розобраться что именно тормозит и почему. Загрузка сырых данных? Математика? Отрисовка браузером? И уже исходя из этого гуглить как исправить.
    Ответ написан
    1 комментарий
  • Какой правильный условный тег для проверки, вариация ли это?

    Вот содержимое функции is_type()
    /**
    	 * Checks the product type.
    	 *
    	 * Backwards compatibility with downloadable/virtual.
    	 *
    	 * @param  string|array $type Array or string of types.
    	 * @return bool
    	 */
    	public function is_type( $type ) {
    		return ( $this->get_type() === $type || ( is_array( $type ) && in_array( $this->get_type(), $type, true ) ) );
    	}

    A Вот, что возвращает get_type для Вариации
    /**
    	 * Get internal type.
    	 *
    	 * @return string
    	 */
    	public function get_type() {
    		return 'variation';
    	}


    получается что так
    if ( $product->is_type( 'variation' ))
    Ответ написан
    Комментировать
  • Какой плагин регистрации лучше на WordPress?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Лучших нет
    Есть 100500 плагинов что делают одно и тоже - но какую-то часть одни делают лучше, какую-то хуже. Вторую часть - наоборот.
    Самое идеальное решение - заказать вот прям как душа хочет - строго под себя. А борщ варить плагины входа и не должны - борьба с спамом в их функционал не входит. это забота плагинов безопасности. Коих тоже зоопарк.
    Не бывает идеального решения для отдельно взятого человека, если конечно это не разраб плагина))
    Мы писали плагины идеальные на наш взгляд и всегда найдется тот кому не понравится и единицу влепит. Что в итоге? Монстр получился с ненужными для большинства опциями - т.к. опция отдельная нужна была нескольким людям. Не фильтр чтоб кодом - галку им подавай.
    Ответ написан
    3 комментария
  • Как отменить действие add_filters на определенной странице?

    like-a-boss
    @like-a-boss
    Признайся,тебяТянетНаКодМужика,ты—программный гей
    Вы мыслите неверно: нужно не отменять фильтр, а не фильтровать там где не нужно:

    add_filter( 'excerpt_length', function() {
            if ( !is_home() ) {
                    return 20;
            }
    } );
    Ответ написан
    Комментировать
  • Как дорабатывать/изменять купленную премиум тему WordPress и не выстрелить себе в ногу?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    И тем не менее, рекомендую создать дочернюю тему и вносить правки уже в ней
    Ответ написан
    Комментировать
  • Как удалить категорию (обратный аналог wp_set_post_categories())?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    wp_remove_object_terms( $post_id, $term_id, 'category' );
    Ответ написан
    Комментировать
  • Как вывести данные из Exel таблицы в frontend WordPress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Есть легкая библиотека SimpleXLSX. Базовое использование, в переменную $sheetData получаете массив из таблицы:

    $fileImport = get_stylesheet_directory() . '/data/example.xlsx';
    if ( $xlsx = SimpleXLSX::parse( $fileImport )) {
    	$sheetData = $xlsx->rows(1);
    
    	foreach ( $sheetData as $key => $sheetRow ) {
    		var_dump( $sheetRow );
    	}
    
    } else {
    	var_dump( SimpleXLSX::parse_error() );
    }


    Еще пример тут

    Раньше пользовался старой библиотекой PHPExcel, конвертирует excel в массив и обратно, но давно не поддерживается и сыпет ошибки на последних версиях php
    Ответ написан
    Комментировать
  • Как вывести данные из Exel таблицы в frontend WordPress?

    Kozack
    @Kozack Куратор тега WordPress
    Thinking about a11y
    https://ssaurel.medium.com/parsing-microsoft-excel...
    https://stackoverflow.com/questions/563670/reading...
    Но, думаю, проще было бы хранить данные в JSON или хотя бы CSV
    Ответ написан
    Комментировать
  • Какой плагин слайдера для Wordpress поставить чтобы было видно части других слайдов?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    При чем тут WordPress? Ищите js-библиотеки, кастомизируйте вывод. Посмотрите slick slider, в демо есть Variable Width или Center Mode, которые могут вам подойти. В owlcarousel есть похожие демо
    Ответ написан
    1 комментарий
  • Как вывести на странице изображения, загруженные пользователем?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    На форуме плагина не помогли.


    Не перевирайте. Оперативно вам ответили по вводным вами данным.

    Вы совсем другую информацию предоставили - совсем ничего. Поэтому и сказали вам что этого в плагине нет, это не заявленный функционал. И на фриланс отправили.

    Тут же вы приводите какой-то код. Но вам ответ - что пользователь WP-Recall - пользователь вордпресс поможет? Значит осталось задать вопросы по апи вордпресс и реализовать свою задачу.

    Под вордпресс сотни тысяч плагинов - наверняка и для вывода галереи ВП пользователя есть решение. Может платное.

    В приведенном вашем коде нет выборки по автору - добавьте ее туда. Доки по get_posts можно найти через гугл
    Ответ написан
    Комментировать
  • Как расширить core/gallery в WP Gutenberg?

    dakiesse
    @dakiesse Автор вопроса
    После целого для копания в сорсах решил. Начну с описания задачи: хотел добавить дополнительный switch в галерею.

    const { createHigherOrderComponent } = wp.compose
    const { InspectorControls } = wp.editor
    const { PanelBody, ToggleControl } = wp.components
    const el = wp.element.createElement
    
    // описания для состояния
    const attributes = {
      enableVoting: {
        default: false,
        type: 'boolean'
      }
    }
    
    function addAttributes (settings, name) {
      if (name !== 'core/gallery') {
        return settings
      }
    
      Object.assign(settings.attributes, attributes)
    
      // возвращаем тот же объект, а не клон как предлагают в некоторых источниках!!!
      return settings
    }
    
    const withInspectorControls = createHigherOrderComponent((BlockEdit) => {
      return (props) => {
        const { attributes, setAttributes } = props
    
        return el(wp.element.Fragment, {},
          el(BlockEdit, props),
    
          props.name === 'core/gallery' && (
            el(InspectorControls, null,
              el(PanelBody, null,
                el(ToggleControl, {
                  label: 'Enable voting',
                  checked: attributes.enableVoting,
                  onChange: () => {
                    setAttributes({ enableVoting: !attributes.enableVoting })
                  }
                })
              )
            )
          )
        )
      }
    }, 'withInspectorControl')
    
    const addExtraData = (props, blockType, attributes) => {
      if (blockType.name !== 'core/gallery') {
        return props
      }
    
      let classes = props.className.split(' ')
    
      if (attributes.enableVoting) {
        !classes.includes('is-voting') && classes.push('is-voting')
      } else {
        classes = classes.filter(className => className !== 'is-voting')
      }
    
      props.className = classes.join(' ')
    
      // возвращаем тот же объект, а не клон как предлагают в некоторых источниках!!!
      return props
    }
    
    wp.hooks.addFilter('blocks.registerBlockType', 'godreams/gallery', addAttributes)
    wp.hooks.addFilter('editor.BlockEdit', 'godreams/gallery', withInspectorControls)
    wp.hooks.addFilter('blocks.getSaveContent.extraProps', 'godreams/gallery', addExtraData)
    Ответ написан
    1 комментарий
  • Не выводится переменная. require в functions.php?

    @BI0R0B0T
    Почему не выводятся переменные? - потому что у них разные области видимости. В подключенный файл наследует область видимости (в нём присутствуют те переменные которые инициированы ранее). Чтобы это обойти можно воспользоваться командой return, если нужно передать несколько переменных их можно упаковать в массив. Еще вариант указать что переменные глобальные, но это считается плохой практикой.
    Ответ написан
    Комментировать
  • Как отключить кнопку "купить", на которую было произведено нажатие?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    процесс такой
    1 нажатие
    2 api запрос
    3 делаешь кнопку не кликабельной
    4 получаешь ответ от api
    5 возвращаешь кнопке кликабельность

    а тот пример который вы привели, вы просто скопипастили откуда то. Включайтесь в процесс мышления, иначе нет смысла заниматься этим
    Ответ написан
    1 комментарий
  • Как вернуть нормальный цвет фотографии?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Могу предположить следующее:
    У вас картинка, которая сохранена локально имеет цветовую систему - CMYK. В то время, как при загрузке становится RGB. Отсюда и разница в цветах. Возможно, что RGB становится при конвертации каринки в webp формат плагином, которым пользуетесь.
    Ответ написан
    Комментировать
  • Как отправить файл на сервер с заменой с помощью встроенной утилиты ftp.exe посредством запуска cmd?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    ftp -s: comm.txt
    А в comm.txt вы пишете ответы на запросы по документации.
    Ответ написан
    Комментировать
  • Как в wordpress удалить домен в url меню?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Вообще есть несколько способов, и все они решают задачу - но с разной степенью влияния на производительность и возможными побочными эффектами (или же наоборот - их отсутствием). Лично я предпочитаю любой код писать как можно "ближе к телу", чтобы изменения происходили с минимальным количеством телодвижений.

    Например, вариант от WP_Panda абсолютно рабочий. Но меня напрягает использование get_home_url() - и в нем нет никакого смысла, если у вас не мультисайт (что чаще всего), достаточно использовать get_option( 'home' ). Эффект тот же, CPU cycles использовано - меньше.

    Дальше, мне не очень по душе перебирать длинные строки которые потенциально могут сломаться целиком, комфортнее работать с данными, до того как они собрались в HTML:
    function absolute_to_relative_url( $atts )
    {
        $atts['href'] = str_replace( get_option( 'home' ), '', $atts['href'] );
    
        return $atts;
    }
    add_filter( 'nav_menu_link_attributes', 'absolute_to_relative_url' );


    Но и здесь мой внутренний задрот все еще не будет удовлетворен, потому что у нас постоянно вызывается get_option( 'home' ) (или get_home_url()), хотя это значение не меняется. Плюс наша логика выполняется на фильтре, который запускается для каждого элемента меню - это все тоже лишние CPU cycles. Поэтому я бы сделал вот так:
    function absolute_to_relative_url( $sorted_menu_items )
    {
        $host = get_option( 'home' );
    
        foreach ( $sorted_menu_items as $item ) {
            $item->url = str_replace( $host, '', $item->url );
        }
    
        return $sorted_menu_items;
    }
    add_filter( 'wp_nav_menu_objects', 'absolute_to_relative_url' );

    Бенефиты - наш коллбек вызывается всего один раз для одного меню, адрес сайта получается один раз, простой цикл быстро перебирает объекты пунктов меню (данные).

    Этого можно не делать, можно просто отфильтровать HTML - и это будет работать, и заметной разницы в производительности не будет, если это сделано только в этом одном месте. Но важен ваш подход к написанию кода в целом. Если подходить без задротства, то в крупных и сложных проектах начнут появляться проблемы с производительностью. Решить эту задачу можно сразу "оптимальнее", по времени и количеству строк одно и то же, эффект тот же. Но в долгосрочной перспективе - как для конкретного проекта, так и для вашей карьеры в целом, больше пользы если решать задачи наиболее эффективным методом.

    ЗЫ: Задроты поймут, лентяи - нет :)
    Ответ написан
    4 комментария
  • Как ограничить кол-во товаров на страницы категории в woocommerce?

    /**
     * Изменяем количество товаров на странице.
     */
    function pan_loop_shop_per_page() {
    	return 50;
    }
    add_filter( 'loop_shop_per_page', 'pan_loop_shop_per_page', 20 );
    Ответ написан
    Комментировать
  • Как сделать калькулятор JS + HTML + WORDPRESS?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    но не хочу чтобы другие люди смогли через код страницы увидеть мой калькулятор и забрать его себе
    Делайте вычисления на стороне сервера.
    Ответ написан
    3 комментария
  • Каких плагинов не доставет wordPress?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Плагина оптимизации вордпресс не хватает
    Хорошего плагина сео - "сделай мне первое место в выдаче"

    Еще я хотел чтоб плагин мог варить мне кофе

    Еще не хватает плагина вордпресс, чтоб качал мне пресс ("вот это пресс!" - т.е. чтоб поставил его и деньги потекли рекой)
    Ответ написан
    1 комментарий