Програмирования ВП

1 000 руб. за проект
15 июня 2024, 13:21 • 4 отклика • 99 просмотров
Добрый день!
https://promokodoff.ru/promokody-bungly/ - как пример, это страница сайта с проблемой.
Как видно - название записи "Промокоды Bungly — Июнь 2024"
Под списком промокодов (они сделаны на кастом филдс + исполнительные скрипты в functions, и вставляются на страницу шорткодом) есть блок Рекомендуемые магазины и сервисы
вот его мне недавно сделали и там есть проблема. Т.к. название статьи в вордпрессе не подходит, чтобы его выводить в таком блоке related, т.к. везде будет слово Промокоды и - Июнь 2024 - ну некрасиво и переспам.

Поэтому у нас в кастом филдс создана группа полей - Логотип и название бренда - то есть два поля. Так вот код в файле related.php ищет лого и заголовок в базе данных. сейчас в каждой категории не очень много магазинов, и нагрузка не смертельная, но тут заложена мина - когда магазинов будет много - база ляжет, т.к. поиск выполняется не оптимально.

Более серьезная проблема вылезла на Алфавитном указателе (alphabet.php) (мне пришлось выключить данную страницу, но черновик можно будет посмотреть)
Там вверху идет список букв рус и лат алфавита. И все Записи на сайте выводятся в соответствии с буквами. и опять же скрипт выводит название магазина из кастом филдс.
Вобщем эта страничка с вроде бы элементарным функционалом почти всегда ложилась с 500 ошибкой и работала 1 раз из 5. Включение плагина для замеров производительности показало, что страница грузит 350мб информации. На что программист сказал, что так устроен вордпресс и иначе делать запросы нельзя.
Почему так много МБ грузит? Потому что на кастом филдс сделан функционал купонов. На каждой записи есть 60 окон для ввода данных промокодов, и это все очень очень много полей. Надеюсь более менее донес суть первых двух проблем

1) поправить функционал Алфавитного указателя
2) поправить функционал блока related
3) в блоке related нужно добавить возможность вывода не магазинов не только в родительской категории, но и в детской, если в родительской мало магазинов. А также добавить возможность выводить не "последние добавленные", а по популярности, и рандомно - возможно сделать разные шорткоды чтобы их можно было менять
4) На главную страницу через шорткод (или иным способом) нужен вывод списка "Новые промокоды". Выводим 10 последних добавленных промокодов с кнопкой "Показать больше", по нажатию кнопки можно максимально догрузить до 100 промокодов.
Формировать список так: для каждого магазина берем 1 последний добавленный промокод с определенными условиями приоритетности (т.к. в 1 день для одного магазина может быть добавлено 5 промокодов, нужно понять какой из них выводить на главную):
- если стоит галочка "Эксклюзив" - выводим именно этот промокод
- если галочки эксклюзив нет, то смотрим галочку "Проверен" и выводим тот код, у которого эта галочка
- если галочки проверен нет, то смотрим что не стоит галочка "Акция" - то есть выводим просто последний добавленный промокод
- если стоит галочка "Акция", то выводим этот купон, при условии что все первые условия не подошли
- если стоит галочка "по времени" - не выводим

Таким образом в списке "Новые промокоды" будет максимум по 1 промокоду от каждого магазина, и в первую очередь мы будем показывать именно эксклюзивные промокоды, во вторую очередь 100% проверенные, в третью - непроверенные, в четвертую - акции.

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

6) на страницы магазинов (Записи) под список купонов магазина по такому же принципу выводить новые промокоды из других магазинов этой же категории где находится запись

6) в плагин yoast seo передавать параметр сколько всего купонов есть для данного магазина. Чтобы я смог в мета-дескрипшн указать этот параметр, который будет выводиться в сниппет

7) скрыть все исходящие ссылки на купонах через редирект promokodoff.ru/out/1234321 - где в цифрах зашифрована исходящая реферальная ссылка

8) нужен блок "Новые магазины и сервисы", который по шорткоду или иначе будет выводить например 10 недавно добавленных магазинов (на главную)