Изначально, если формировать контейнер полей в админке на странице редактирования поста, кастомного типа или статической страницы, блок находится под заголовком и основным редактором текста, если он определен. Но нам хочется поместить его в сайдбар по тем или иным причинам, например для удобства.
Положение контейнера определяется двумя параметрами.
Context. Это часть страницы на которой контейнер должен отобразиться. По дефолту значение ‘normal’. Но нам нужно положение ‘side’. Поэтому в отдельном контейнере переносим поле.
Priority. Это второй параметр, который видно по коду. Исходя из названия — приоритетность. То есть положение относительно других блоков, в частности дефолтных таких как: блок публикации, категории и тд.
Добрый день. Сегодня расскажу как поставить мультисайт на локальном сервере.
Для чего он нужен? Для организации подразделов или поддоменом, при этом используя только один инстанс WordPress (т.е один каталог CMS). Более подробно вы можете ознакомиться в документации.
В данном гайде я буду акцентировать внимания именно на локальной установке, но так же будет применимо и для установки на хостинге. Для настроек на сервере можете использовать ссылку на документацию выше.
Проблема
В чем заключаем нюанс. Давайте вместе пройдем путь установки и сами увидим в чем загвоздка. Для начала можно использовать любой локальный сервер. Для мака я использовал MAMP. Но сейчас я это буду делать через docker, так как и решение я нашел через него. Для установки вордпресс через докер можете воспользоваться моим гайдом.
Итого мы имеем чисто установленный вордпресс на localhost.
Хорошо. Теперь переходим к установки мультисайта по документации. Заходим в wp-config.php и проставляем объявление:
define( 'WP_ALLOW_MULTISITE', true );
Теперь у нас в панели инструментов появилась настройка сети.
Но в нашем случае мы видим только настройку подкаталоги, так как мы используем localhost.
Решение
Я не нашел явного решения через локалхост и через MAMP. Возможно есть какой то подход.
Мое решение выглядет так. Не понимаю в чем ограничение localhost, возможно это связано с зарезервированым названием. Мы изменяем нашу сборку Docker. В сервисе wordpress мы прописываем hostname — с названием нашего произвольного сайта.
В разделе сервисов мы добавили первое, которое называется db. Этот сервис связан образом mysql и, следовательно, предоставляет необходимый экземпляр базы данных MySQL.
Эта команда позволяет нам запустить базу с включенной собственной аутентификацией по паролю. Кроме того, нам нужно установить следующие переменные среды: MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER и MYSQL_PASSWORD. Можете прописать свои.
Здесь мы используем образ wordpress. Вы можете указать любую версию вида wordpress:4.9.8. Я буду использовать последнюю актуальную.
Свойство volumes используется для подключения каталога /var/www/html контейнера к локальной папке приложения. Все изменения, которые мы будем вносит в файлы папки нашего приложения буду отображать сразу в контейнере.
Кроме этого, мы снова используем раздел environment для установки значений для четырех переменных: WORDPRESS_DB_HOST, WORDPRESS_DB_NAME, WORDPRESS_DB_USER и WORDPRESS_DB_PASSWORD. Значение, присвоенное WORDPRESS_DB_HOST, должно быть идентификатором сервиса базы данных ( в нашем случае db).
И мы обязательно сопоставим внутренний порт 80 с внешним портом 8080, чтобы WordPress был доступен через http://localhost:8080.
Здесь мы используем образ phpmyadmin/phpmyadmin (https://hub.docker.com/r/phpmyadmin/phpmyadmin). Включаем доступ к базе данных для phpMyAdmin. Устанавливаем две переменные среды для этой службы: PMA_HOST: необходимо указать имя службы базы данных (в нашем случае db) MYSQL_ROOT_PASSWORD: необходимо установить пароль root MySQL (в нашем случае это просто password)
Внутренний порт 80 (на котором по умолчанию доступен phpMyAdmin) сопоставлен с внешним портом 3333, чтобы мы могли получить доступ к веб-интерфейсу пользователя phpMyAdmin с помощью URL http://localhost:3333 позже.
Предлагаю удобный сниппет. С его помощью можно легко получить текущий URL-адрес страницы на вашем сайте WordPress независимо от отображаемой страницы.
Не имеет значения, нужен ли вам URL-адрес для одного поста, URL-адрес страницы, домашняя страница, шаблон категории, шаблон тега, пользовательский тип поста или любой другой шаблон WordPress.
Так вернется полностью url. аналог функции get_site_url().
global $wp;
$current_url = home_url( add_query_arg( array(), $wp->request ) );
Так к примеру, если страница http://mysite.com/some-post, то вернется только слаг some-post.
global $wp;
$current_slug = add_query_arg( array(), $wp->request );