Необходимо реализовать кеширование определенной кода в PHP - например, код вывода подобных постов <!--?php similar_posts(); ?--> (или другой какой-то) - с ним в 3 раза дольше грузится страница. Соответственно как закешировать именно результат этого кода? В интернете много перерыл инфы, но полезного почти ни чего нет. Спасибо
Отдельные плагины кеширования не устраивают - они много места занимают.
Проще всего использовать встроенный механизм кеширования (функции wp_cache_add, wp_cache_set, wp_cache_get и прочие). Подробно они описаны в документации: https://codex.wordpress.org/Class_Reference/WP_Object_Cache Обратите внимание, что для полноценной работы необходимо подключить модуль/плагин для объектного кеширования.
В качестве ключа можно использовать ID записи или рубрики с префиксом.
Я добавил проверку элемента, который вызвал событие. Это помогает исключить срабатывание при всплывании. Подробнее в документации: https://learn.javascript.ru/event-bubbling
DELETE relations.*, taxes.*, terms.* FROM wp_term_relationships AS relations
INNER JOIN wp_term_taxonomy AS taxes ON relations.term_taxonomy_id=taxes.term_taxonomy_id
INNER JOIN wp_terms AS terms ON taxes.term_id=terms.term_id
WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type='product');
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_posts WHERE post_type = 'product';
Вообще что-то удалять через SQL - это не лучшее решение, но на больших объемах данных оно может выручить.
Dana: Я не Бог весть какой эксперт, но работала на нем.
И нужную структуру мне сделать не дало.
Например:
needles/woman/dress01.html
и
crochet/woman/dress01.html
Знатоки WP! Может движок сделать такое? Он у меня затыкнулся на подкатегории woman...
Основной проблемой в данном случае является то, что в WP по-умолчанию все slug-и (псевдонимы, названия в URL, очень грубо говоря) должны быть уникальными. Ограничение это можно понять. Если вы, например, решите перенести подрубрику wooman из crochet в needles, то получится, что по одному и тому же адресу needles/woman/dress01.html будут уже две записи и две рубрики.
Для решения этой коллизии можно использовать несколько решений. Первое и самое очевидное - это хранить для каждой записи свою ссылку в поле с доп. информацией. Именно по такому принципу работает плагин https://ru.wordpress.org/plugins/custom-permalinks/ и прочие схожие (https://wordpress.org/plugins/simple-urls/ , например). В этом случае уникальной должна быть только вся ссылка, а не отдельные ее части.
Второе решение - это просто добавить к slug-ам ID категорий и записи. В итоге получится ссылка вида 2-needles/4-woman/6-dress01.html. В этом случае при наполнении нужно будет создать в базе данных таблицу со старой и новой ссылкой, а также написать небольшой плагин, который будет автоматически перенаправлять со старой страницы на новую, если движок по каким-то причинам выдал 404 ошибку. Впрочем, это можно реализовать и с помощью огромного количества уже готовых плагинов для редиректа.
Вариант, когда просто убирается проверка на уникальность slug-ов, я категорически не рекомендую, поскольку функции выборки будут работать неправильно.
Tison: Здравствуйте, хочу добавить на свой сайт раздел в котором записи должны выводится по другому чем в остальных рубликах. Подойдет что-то вроде скопировать файл categories.php например создать categories2.php и в нем уже задать вид, как зарегистрировать и присвоить нужную категорию к categories2.php?
Это можно сделать, создав файлы с именами category-{псевдоним категории}.php или category-{ID категории}.php. Подробнее описано в документации: https://codex.wordpress.org/Category_Templates
Gigabajt: Занимаюсь версткой я такой, пишу код, все дела... В общем, пришла в верхнюю часть тела мысль такая, а должен ли я нарезать картинки с макета самостоятельно или с этим дизигнер париться должен? И как научить его единые элементы, которых на сайте нет смысла разбивать, делать одним слоем, а не 1000 слоями, которые приходится все-равно сводить?😡😡😡
Нарезкой картинок из макета должен заниматься тот человек, который выполняет верстку. Связано это с тем, что дизайнер заранее не знает как вы будете верстать проект и что именно вам нужно.
У вас главная страница, например, генерируется сравнительно быстро - около 0.1-0.15 секунд. Это в принципе допустимо. Другое дело, что там еще 6.8 Мб различного рода файлов и под 160 запросов. Только две png-картинки с постерами - это уже 3 Мб. Если сервер подключен по 100 Мбит/с каналу и он весь ваш, то только на передачу этого всего счастья уйдет около 1 секунды.
Установил плагин Query Monitor и побегал по страницам сайта. В результате вылезла такая картина: в среднем запросы к бд занимают 0.05 сек., а генерация страницы при этом идет от 0.3 до 0.6сек. для оптимизации php у меня стоит xCache.
Вопрос: Такая долгая генерация страниц является следствием медленного php и мне надо разбираться с его конфигом / оптимизаторами. Или плагин показывает какую-то другую информацию о времени запроса?
В первую очередь нужно посмотреть сколько времени выполняются MySQL-запросы. Описанный вами плагин https://ru.wordpress.org/plugins/query-monitor/ эту информацию должен показывать (колонка Time).
Для кардинального ускорения генерации страниц можно использовать плагины для кеширования. Я предпочитаю Cachify, WP-FFPC или Hyper Cache. Из более сложных есть W3C Total Cache.
Maxim-KL: Всем доброго времени суток и заранее спасибо за полезные советы. Ситуация такая:
Необходимо организовать конкурс фоторабот на WP в одном посте. Что бы было полноценное голосование и один человек мог проголосовать только один раз. Если честно я совсем слабо себе представляю как такое сделать так как раньше не приходилось с подобным сталкиваться. Даже не знаю использовать какой то плагин или что...?
Буду очень благодарен если укажите в какую сторону стоит двигаться.🍿
Я в основном для решения подобного рода задач использую дополнительные мета-поля записи и AJAX-запросы:
Добрый день!
Необходимо реализовать кеширование определенной кода в PHP - например, код вывода подобных постов <!--?php similar_posts(); ?--> (или другой какой-то) - с ним в 3 раза дольше грузится страница.
Соответственно как закешировать именно результат этого кода?
В интернете много перерыл инфы, но полезного почти ни чего нет.
Спасибо
Отдельные плагины кеширования не устраивают - они много места занимают.
Проще всего использовать встроенный механизм кеширования (функции wp_cache_add, wp_cache_set, wp_cache_get и прочие). Подробно они описаны в документации: https://codex.wordpress.org/Class_Reference/WP_Object_Cache Обратите внимание, что для полноценной работы необходимо подключить модуль/плагин для объектного кеширования.
В качестве ключа можно использовать ID записи или рубрики с префиксом.
Я добавил проверку элемента, который вызвал событие. Это помогает исключить срабатывание при всплывании. Подробнее в документации: https://learn.javascript.ru/event-bubbling
Как удалить сразу все товары из wp? Плагином или командой в mysql.
Нужен проверенный метод, гуглить я сам умею.
Все зависит от того как именно они у вас хранятся.
Если вы используете WooCommerce, то можно попробовать использовать плагин: https://ru.wordpress.org/plugins/woocommerce-remove-all-products/ Можно также и через MySQL:
Вообще что-то удалять через SQL - это не лучшее решение, но на больших объемах данных оно может выручить.
Это делается достаточно просто:
Я не Бог весть какой эксперт, но работала на нем.
И нужную структуру мне сделать не дало.
Например:
needles/woman/dress01.html
и
crochet/woman/dress01.html
Знатоки WP! Может движок сделать такое? Он у меня затыкнулся на подкатегории woman...
Основной проблемой в данном случае является то, что в WP по-умолчанию все slug-и (псевдонимы, названия в URL, очень грубо говоря) должны быть уникальными. Ограничение это можно понять. Если вы, например, решите перенести подрубрику wooman из crochet в needles, то получится, что по одному и тому же адресу needles/woman/dress01.html будут уже две записи и две рубрики.
Для решения этой коллизии можно использовать несколько решений. Первое и самое очевидное - это хранить для каждой записи свою ссылку в поле с доп. информацией. Именно по такому принципу работает плагин https://ru.wordpress.org/plugins/custom-permalinks/ и прочие схожие (https://wordpress.org/plugins/simple-urls/ , например). В этом случае уникальной должна быть только вся ссылка, а не отдельные ее части.
Второе решение - это просто добавить к slug-ам ID категорий и записи. В итоге получится ссылка вида 2-needles/4-woman/6-dress01.html. В этом случае при наполнении нужно будет создать в базе данных таблицу со старой и новой ссылкой, а также написать небольшой плагин, который будет автоматически перенаправлять со старой страницы на новую, если движок по каким-то причинам выдал 404 ошибку. Впрочем, это можно реализовать и с помощью огромного количества уже готовых плагинов для редиректа.
Вариант, когда просто убирается проверка на уникальность slug-ов, я категорически не рекомендую, поскольку функции выборки будут работать неправильно.
Здравствуйте, хочу добавить на свой сайт раздел в котором записи должны выводится по другому чем в остальных рубликах. Подойдет что-то вроде скопировать файл categories.php например создать categories2.php и в нем уже задать вид, как зарегистрировать и присвоить нужную категорию к categories2.php?
Это можно сделать, создав файлы с именами category-{псевдоним категории}.php или category-{ID категории}.php. Подробнее описано в документации: https://codex.wordpress.org/Category_Templates
Занимаюсь версткой я такой, пишу код, все дела... В общем, пришла в верхнюю часть тела мысль такая, а должен ли я нарезать картинки с макета самостоятельно или с этим дизигнер париться должен? И как научить его единые элементы, которых на сайте нет смысла разбивать, делать одним слоем, а не 1000 слоями, которые приходится все-равно сводить?😡😡😡
Нарезкой картинок из макета должен заниматься тот человек, который выполняет верстку. Связано это с тем, что дизайнер заранее не знает как вы будете верстать проект и что именно вам нужно.
У вас главная страница, например, генерируется сравнительно быстро - около 0.1-0.15 секунд. Это в принципе допустимо. Другое дело, что там еще 6.8 Мб различного рода файлов и под 160 запросов. Только две png-картинки с постерами - это уже 3 Мб. Если сервер подключен по 100 Мбит/с каналу и он весь ваш, то только на передачу этого всего счастья уйдет около 1 секунды.
Здравствуйте!
Установил плагин Query Monitor и побегал по страницам сайта. В результате вылезла такая картина: в среднем запросы к бд занимают 0.05 сек., а генерация страницы при этом идет от 0.3 до 0.6сек. для оптимизации php у меня стоит xCache.
Вопрос: Такая долгая генерация страниц является следствием медленного php и мне надо разбираться с его конфигом / оптимизаторами. Или плагин показывает какую-то другую информацию о времени запроса?
В первую очередь нужно посмотреть сколько времени выполняются MySQL-запросы. Описанный вами плагин https://ru.wordpress.org/plugins/query-monitor/ эту информацию должен показывать (колонка Time).
Для кардинального ускорения генерации страниц можно использовать плагины для кеширования. Я предпочитаю Cachify, WP-FFPC или Hyper Cache. Из более сложных есть W3C Total Cache.
Всем доброго времени суток и заранее спасибо за полезные советы. Ситуация такая:
Необходимо организовать конкурс фоторабот на WP в одном посте. Что бы было полноценное голосование и один человек мог проголосовать только один раз. Если честно я совсем слабо себе представляю как такое сделать так как раньше не приходилось с подобным сталкиваться. Даже не знаю использовать какой то плагин или что...?
Буду очень благодарен если укажите в какую сторону стоит двигаться.🍿
Я в основном для решения подобного рода задач использую дополнительные мета-поля записи и AJAX-запросы:
Поместить его можно в functions.php
В шаблоне это можно использовать примерно так: