• Вывод статей в Wordpress на главной разного вида?

    hiddenseek, Серьезно? 200+ Кб CSS, 300+ Кб JS не считая jQuery (от которого как бы не уйти, поэтому плюсуем еще его), полное наплевательство на семантику и адекватный DOM, ужасная каша из классов в HTML и тд. Одним словом - говнокод. Ну и тормоза.

    Все то же самое делается красиво и элегантно на ванильке. А если вы этим занимаетесь хотя бы год, то у вас уже есть (должны быть) свои либы / сниппеты, формируя таким образом свой собственный фреймворк, без всего этого мусора.
  • Вывод статей в Wordpress на главной разного вида?

    hiddenseek, хз, лично я бутстрап обхожу десятой дорогой, как место взрыва атомной бомбы
  • Плагин advanced custom filed pro?

    Алексей Николаев, простой тест показывает, что разница между Gallery Field и Repeater Field + Image есть, но не такая уж и разница, в контексте input_vars:

    5a708a8ae5dde012794162.jpeg

    Сверху галерея, снизу рипитер.

    И да, я полностью согласен, что если речь только о куче картинок, то Gallery Field однозначно выигрывает. Впрочем, у автора вполне может быть что рядом с картинкой в паре идет еще какое-то поле (и не одно), тогда галерея отпадает и мы возвращаемся туда, откуда начали.

    Плюс, в обеих случаях проблема совершенно в другом - получить что 1 строку, что 10 000 из wp_postmeta по ключу post_id - практически одно и то же. Это non-unique index, запрос не проблема. А получаются метаданные как раз все вместе, за один запрос в prime_meta_cache. А вот что действительно добавит нагрузки, так это получение этих картинок. В обеих случаях хранится attachment_id, а это означает дополнительный get_post на каждую картинку + все тот же prime_meta cache (ну или если кеш выключен - все равно получение всех meta для записи при первом вызове). И этого не избежать, что с галереей, что с рипитером и картинкой.

    Я что имею в виду - оптимизация через тип поля ACF - это и не оптимизация вообще. Эффект несущественный. А вот что можно было бы сделать - и я делал не раз для своих проектов - так это добавить настройку в ACF Image Field СОХРАНИТЬ image path (YYYY/MM/filename.ext) в мета, а не только его ID. Вот в этом случае мы можем выводить картинки сразу из wp_postmeta, без дополнительных запросов на аттачменты и их метаданные. Да, придется еще допилить стопочку коллбеков на удаление аттачмента из библиотеки и тд, сделать оберточку для получения кропнутого размера и тд, но зато количество запросов к БД и добрый кусок лигики срезается. Вот это уже оптимизация, которая даст ощутимый эффект.

    В целом, мысли то у нас правильные. Я согласен с тем, что надо думать над архитектурой в первую очередь, а в случае эволюции требований - рефакторить. Но, увы, далеко не всегда клиенты дают нам такую возможность. Вот и автор вопроса пришел с конкретной проблемой. Которая решается одной строчкой в конфиге php.ini. А все остальное - лирика :)
  • Плагин advanced custom filed pro?

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


    Да, если есть понимание этого всего со стороны клиента, а также время и бюджет на рефакторинг. В идеале, так и должно быть. Но мы в реальном мире живем, увы.

    Вот я вам аналогию приведу - в вашей таблице 244 колонки, она тормозит и глючит


    У меня нет таких таблиц, и в WP таких таблиц нет. ACF по умолчанию хранит все в wp_postmeta, в которой 4 колонки. В приведенных мною примерах используется произвольный процессинг который сохраняет данные в отдельные таблицы (это и есть элемент пересмотра архитектруы), спроектированные конкретно под эти задачи. Метаданные не засоряются и не используются вообще.

    Технически, все работает, но это неправильно.


    Для начала, у нас тут WordPress. Слово "правильно" в контексте такого legacy приложения неуместно по определению.

    Например, я на 99% уверен, что эти 244 поля с картинками можно было бы заменить одной галереей


    А откуда вы знаете что там не галерея? Или Repeater с Image field, что по сути не сильно отличается друг от друга?

    или списком id, которые сохранялись бы одним input_var


    Вот в этом месте, как мне кажется, всплывает недоразумение. Подозреваю, вы не совсем поняли что такое input_var и откуда их так много у топикстартера.

    Во-первых, это не 244 разных поля. Это скорее всего 1 ACF поле (Gallery, Repeater - не принципиально), которое дублируется и повторяется. И когда этих элементов становится 244, при сабмите в массиве $_POST это выглядит приблизительно так:

    [
        'image_1' => '23',
        '_image_1' => 'field_{md5}',
        'image_2' => '24',
        '_image_2' => 'field_{md5}',    
        ...
        'image_244' => '345',
        '_image_244' => 'field_{md5}',    
    ]

    То есть, массив $_POST содержит 244 элемента для картинок (ID) + столько же элементов для сохранения уникального ID поля (так работает ACF, он использует этот ключ на выводе для форматирования данных). Отсюда получаем 244 + 244 = 488 input_vars. Добавим сюда сабмит, nonce и referrer, еще какие-нибудь скрытые поля, возможно парочка других ACF полей рядом, а также тайтл, визуальник и прочие родные WP поля. Вот мы и уперлись в max_input_vars - PHP получает, скажем, 522 input_vars от этой формы, а лимит у него 500. Значит 22 последние input_vars будут просто проигнорированы. Они будут отсутствовать в массиве $_POST, а значит не придут в обработчик, а значит не будут сохранены. Но если изменить этот параметр в php.ini, то эти переменные зайдут без проблем.

    Короче говоря, проблема - между отправкой формы с клиента и получением данных в $_POST серверным обработчиком. Часть данных к обработчику просто не доходит, сам движок PHP их обрезает. Поэтому как там вы собрались сериализовать, или в строку клеить - это как бы никому не интересно. Потому что необходимых данных попросту нет. Они до обработчика не долетают.

    Можно ли это обойти? Да можно конечно, и вариантов масса - можно например запилить hidden поле и в него на before_submit все картинки сериализовать, остальное удалять и даже не передавать. А потом на бекенде строку разбирать и обрабатывать. Но зачем? Просто измените дефолтную конфигурацию PHP, и вопрос изчезнет. Дефолтные конфиг не означает, что его нельзя менять. Значение в 500 input_vars - это среднестатистическое. Если вам надо 1000 и более - ставьте, это абсолютно нормально.

    И еще раз, объясните почему же автор неправильно использует плагин?
  • Плагин advanced custom filed pro?

    Алексей Николаев, Что и где сделано? max_input_vars – это опция самого движка PHP, с ней рано или поздно сталкиваются все на своем жизненном пути когда начинают работать с относительно большими объемами данных. WordPress, данный плагин и то как он сделан здесь вообще ни при чем. Это такое же ограничение, как лимит на объем загружаемых файлов, который по умолчанию 2Мб, но в 99% случаев этого мало и все поднимают до необходимого уровня.

    Плагин используется абсолютно нормально и правильно. С чего вы взяли, что неправильно? У меня на одном из проектов Repeater Field используется для табличных данных, там несколько сотен строк - абсолютная норма. На другом проекте используется Flexible Content Field, который в свою очередь использует не только поля с данными, но и всякие Tab, Accordeon, Group и тому подобные, которые тоже передаются. В самом Flexible Field 2 десятка темплейтов, в каждом от 5-6 до 30-40 полей. В результате при сохранении передается сильно больше тысячи input_vars. Что в этом неправильного?
  • Плагин advanced custom filed pro?

    Это ограничение PHP, смотрите матчасть. БД пофиг, плагину пофиг. PHP, собственно, тоже пофиг, просто попросите его принимать больше переменных в запросе.
  • Почему говорят что jquery не нужен?

    Антон Мудренок, вообще-то в распакованном виде - сильно больше. Прилет по сети не принципиален - что 27, что 64. Браузер потом это дело распаковывает и охреневает от 200+ Кб жс который надо спарсить и обдумать, блокируя попутно рендеринг страницы (а часто - и загрузку других ресурсов). Особенно если jquery в head. Вот это и есть самое узкое место jQuery. Особенно когда на сайте нужно парочку простых операций с DOM, которые в нативе вылезут максимум в 50 строк кода на все про все.
  • Можно ли такое реализовать с помощью Wordprss?

    На WP можно такое сделать, но он больше заточен для ведения блогов.

    Да перестаньте уже твердить эту устаревшую лет на 10 глупость. WordPress уже давным давно сильно больше чем блог, и ни под что он не заточен. Единственные пережитки прошлого - это то, что в конфигурации по умолчанию функционал блога включен сразу. На этом все.
  • Wordpress: один main.js файл для ajax и общих скриптов?

    thehighhomie, Совершенно не проблема, он был разработан специально для этого (в том числе).
  • Wordpress: один main.js файл для ajax и общих скриптов?

    thehighhomie, воу-воу, палехче)

    Минифицировать надо. Минификация это когда все одну строчку, без пробелов и все такое. Машине пофиг, а файл меньше. Минифицировать независимо от протокола, всегда.

    Конкатенировать для HTTP/2 не надо. Конкатенация - это объединение нескольких файлов в один. Возникла эта практика из-за того, что по протоколу HTTP/1.1 браузер открывает только несколько соединений с сервером, и если файлов много, то они качаются по очереди, замедляя таким образом загрузку. По протоколу HTTP/2 открывается одно общее соединение, по которому все файлы льются потоками, поэтому склеивать их в один не надо.

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

    Одиночка Айс, точняк. alex-1917 сам не в курсах что к чему, зато красиво прикалывается)
  • Как организовать платную подписку на wordpress?

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

    не факт
  • Почему функция возвращает одинаковое значение?

    id_baton4eg, моя мысль была исключительно в том, что код Exploding содержит ошибку, из-за которой не будет работать так, как ожидается. Что касается вашей задаче - я так и не понял что вы пытаетесь сделать и с какой целью. Предполагаю, есть более элегантное и эффективное решение. Но надо понимать проблему, которую вы пытаетесь решить.
  • Как полностью отключить консоль wordpress для подписчиков?

    Отключить админбар или закрыть доступ в админку дело нехитрое, но вопрос был немножко в другом. Кроме вот этого, автору еще надо было:

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

    Exploding, the_row(); //тут не ведомо что еще... должно идти сразу же после while. Это "цикл" плагина Advanced Custom Fields, который построен по такому же принципу как цикл WordPress. Функция the_row устанавливает объект в текущей итерации в глобальный scope. Не спрашивайте зачем, долго объяснять =)

    В вашем коде из-за этого get_sub_field() не будет возвращать корректное значение, потому что эта функция уже стучится в глобалку и ожидает что там все для нее подготовили.
  • Как запретить вывод записей в родительской категории из дочерних рубрик?

    Вы прикалываетесь? Этим "решениям" более 7 лет и они писались под версию WP 2.7 или около того. С тех пор все сильно изменилось.
  • ACF в шаблоне (Post Template)?

    Илья, скриншоты покажите, ничего из ваших слов не понятно