Intereting Posts
Как отображать html только на первом уровне WP комментариев? Создание пользовательской приветственной электронной почты без плагина Добавить контейнер в подменю nav_menu ajax drop down change second drop down data Почему сообщения в блоге не отображаются? Настройка содержимого SERP для WordPress Blog Какова наилучшая практика для инициализации $ wpdb путем загрузки wp-load.php? WP запутывает «ссылки на мои статьи» с «комментариями»? Параметры плагинов не сохраняются и не создаются Изменение запланированных должностей для публикации Есть ли способ оптимизировать функцию, которая используется для возврата данных в ajax-вызов? Прокрутите все изображения медиа-библиотеки и верните те, где подпись содержит текстовую карусель Изменение пути видимого URL-адреса к файлам css и js Проблемы с wp_redirect и current_user_can как сохранить выбранную опцию в переменной для атрибута категории отдыха api

Правильный способ реализации / доступа к встроенной странице в моей теме

Моя тема имеет верхнюю панель меню с ярлыками доступности (переход на контент, режим высокой контрастности и т. Д.). Мне нужно включить ссылку на информационную страницу, описывающую доступные функции доступности для посетителей.

Это проект для многоуровневой сети университета с множеством размещенных сайтов, поэтому мне нужно решение, которое не требует ручного создания страницы на каждом сайте. Я также хочу иметь возможность легко обновлять этот контент в будущих версиях темы (т. Е. Вставка содержимого в базу данных нескольких сайтов может быть не очень хорошей идеей).

Я рассматриваю ссылку на домашнюю страницу сайта с некоторым параметром URL, например site1.example.com/?info=accessibility и адресацией содержимого в index.php, но это выглядит не слишком элегантно.

Любые советы по более чистым способам реализации этого?

Заранее спасибо!

Solutions Collecting From Web of "Правильный способ реализации / доступа к встроенной странице в моей теме"

Я читаю следующий вопрос:

site.network.com

site-2.network.com

site-3.network.com

где основной сайт существует на сайте network.com (т.е. blog id 1 ). Все сайты (или, по крайней мере, все субдоменные сайты) используют одну и ту же тему.

Вы должны иметь возможность создавать одну страницу контента и иметь этот контент на всех сайтах, то есть * .network.com / some-page /


Ниже приведено использование страницы на главном сайте (id 1) в качестве источника контента (позволяющего вам обновлять / редактировать этот контент через редактор) и файл шаблона для соответствующего заголовка страницы.

Вы можете включить статический контент таким же образом. (см. Примечания к шагу 1 в конце).


Шаг 1

Вы можете добавить шаблон страницы к теме для определенной страницы, например, под названием « Доступность », дублируя страницу page.php и переименовав ее в page-accessibility.php

Шаг 2

В page-accessibility.php мы удалим нормальный цикл и заменим его на некоторый код, чтобы получить содержимое другой страницы: страницу доступности с основного сайта; используя switch_to_blog() .

Если идентификатор основного сайта равен 1 , страница страницы-accessibility.php шаблона может выглядеть примерно так:

 get_header(); switch_to_blog(1); $post = get_page_by_title( 'Accessibility' ); if ($post) { $content = do_shortcode( html_entity_decode( $post->post_content ) ); } restore_current_blog(); ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php echo $content; ?> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); get_footer(); 

Шаг 3

Создайте пустую страницу с названием Доступность для всех сайтов. Вместо того, чтобы запускать что-то, что будет использовать switch_to_blog() чтобы создать страницу для каждого из них, мы могли бы вместо этого проверить наличие страницы при init сайта и создать ее только в том случае, если она не существует.

functions.php темы

 add_action( 'init', 'set_default_page' ); function set_default_page() { check_exists_create_page( 'Accessibility' ); //again, checking by title } function check_exists_create_page( $title ) { if ( get_page_by_title( $title ) == NULL ) { $args = array( 'post_title' => $title, 'post_content' => '', 'post_status' => 'publish', 'post_author' => 1, 'post_type' => 'page' ); wp_insert_post( $args ); } } 

Примечания к шагу 1

Вы также можете использовать эту иерархию шаблонов для включения статического контента. Удалите нормальный цикл и добавьте свой контент напрямую или включите другой php-файл и т. Д. Затем перейдите к шагу 3 и создайте страницу с именем, которое соответствует шаблону страницы {your-page-name} .php для каждого сайта.

Примечания к шагу 2

Если вы хотите использовать сайт, отличный от id 1 , вы всегда можете получить идентификатор сайта, который вы хотите использовать, через get_current_blog_id()

get_page_by_title() использует заголовок не slug. Чтобы получить страницу под названием Моя новая страница :

get_page_by_title( 'My New Page' )

Здесь я просто связываю дополнительную информацию о do_shortcode() и html_entity_decode() . И для switch_to_blog() и restore_current_blog() .

Примечания к шагу 3

Может быть лучший крючок, чем init . Вы также можете добавить условную проверку, если хотите исключить некоторые сайты из этой страницы check / creation. См. Мой ответ по другому вопросу, если вам это нужно.

Во время тестирования помните, что страница в корзине все еще существует.

Если плагин будет работать – см. Плагин WP Accessibility. В разделе «Настройки», «Добавить Skiplinks», есть возможность добавить свою собственную ссылку (ссылку или идентификатор контейнера). Может указывать на центральную страницу?