Так можно посмотреть все произвольные поля поста
print_r(get_post_meta(55));
Способ может и странный, но он работает
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 - выводит все посты