divv

Рейтинг
152
Регистрация
02.02.2010

Способ может и странный, но он работает

wp-config.php

$link = $_SERVER['REQUEST_URI'];
$link =  ltrim($link, '/');
$link = explode('/', $link);

$arr = ['omsk','ufa','msk'];

if(!empty($link[0]) && in_array($link[0], $arr)) {
   define( 'WP_HOME', 'http://site.ru/'.$link[0]);
define( 'CITY', $link[0]);
}

1. заменяет все ссылки на странице добавляя в начале урл город(slug): site.ru/msk/mypage, site.ru/msk

2. 404 ошибка для не существующих городов в массиве

3. открывает страницу без города, например для Москвы: site.ru/mypage, site.ru

4. не нужно заморачиваться с rewrite rule для разных типов записей и таксономий (это тоже как вариант, второй способ)


Нужно добавить города с соответствующими слагами в базу, далее получать объект записи по слагу (константа CITY) и использовать по назначению, например подставлять в тайтл название города или использовать для шорткода.

Ростислав Шацкий #:

Скажите, я правильно понимаю, что речь идет об одном сайте, в архитектурное древо которого закладываются города как тип записи? Далее документ(ы) могут открываться через город и иметь свою оптимизацию под поиск? А если в контенте(тексте) документа требуется подмена города? Как то завязывать на тип записи..?

Да, это один сайт, один набор городов, рубрик, меток и т.д.

Подмена города для шаблонных страниц (одинаковых для всех городов) через шорткоды или свои расставленные макросы.

Нужно только на всех страницах сверять на наличие города в базе, т.е. из адреса site.ru/msk/ или site.ru/msk /page, получать из урл msk, сверять его с базой и если есть, то менять контент на странице под этот город. по сути это одна функция, которую можно везде использовать , в том числе для создания шоркодов.


Реализация в целом зависит от самого сайта. Либо это как доска объявлений, где каждое объявление привязано только к одному городу и должно отображаться только в этом городе. Либо это как интернет-магазин, где обычно товары во всех городах одинаковые и меняется только сео и контакты.

Давно уже делал на поддоменах и на разделах.

Если на разделах, то  в wp-config.php нужно принудительно менять адрес сайта

define( 'WP_HOME', 'http://site.ru/msk');


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


Список городов добавлялся в произвольном типе записей.

Если нужна фильтрация для записей для каждого города своя, то при публикации нужно выбирать еще и город.

Там еще какие-то заморочки были по типу страниц контактов для разных городов. Но это проще чем мультисайт.

С воскресенья практически нули в доходе.
Сначала подключить подключить ядро
require_once $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php';

Вывод шорткода в php

echo do_shortcode('[shortcode]');

Общее количество записей нужно знать для общего кол-ва страниц пагинации.

Первая страница - из базы по запросу берется к примеру первые 10 записей

Вторая страница - из базы берется следующие 10 записей, в запрос добавляется offset = 10, чтобы пропустить первые 10 и не получать их базы.

Вообще не понятно, что за вопрос, в чем проблема?

 $query->found_posts;

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

no_found_rows = true

тогда и запрос будет быстрее выполнятся.

Параметр posts_per_page - ограничивает количество постов в запросе, сколько укажите, столько и будет.

posts_per_page = -1 - выводит все посты

SeVlad #:

Ещё один дикий новомодный культ... Когда я первый раз увидел название "мануала" "Как сверстать тему на ACF" меня чуть удар не хватил. А теперь эта хрень так расплодилась... И ACF пихают где ни попадя.

И да - по телодвижениям это ничуть не проще чем даже те же мышевозки. Скорее даже сложнее, тк нужно не только кодить, но и учить как "это" вывести, да с обработкой ошибок (что для нуба совсем не очевидно).

Что там сложного?

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


Элементор это тормоз, потом будете решать проблему со скоростью загрузки страницы.  И вообще я не вижу преимущества или простоты редактирования контента используя любые пейджбилдеры. Чтобы что-то отредактировать нужно 100 500 каких-то настроек сделать.

Самое оптимальное это сверстать блоки лендинга вручную и установить плагин произвольных полей, например acf pro. Pro потому, что там есть повторяемые поля(хотя и для бесплатной версии есть дополнение для повторяемых полей).

Настройку каждой секции лендинга в админке можно сделать внутри табов для удобства, секция 1, секция 2 и т.д. Слайдеры, раздел faq, список товаров сделать через повторяемые поля.

Dmitriy_2014 #:
Последний странный вопрос, если можно, если есть тут математики, подскажите если у меня получилось 0,001 секунда за 42 if’а, то типа чтобы код занял выполнение за 1 одну секунду нужно наклепать 42000 if’ов :-), по моим расчетам, хотя может что-то я не то насчитал.

Скинули бы весь код, может кто, что подскажет как сократить.

Дело же не только в if, а в самих условных тегах, они могут делать запросы к базе для проверки.

Всего: 559