Как организовать файлы PHP, чтобы разрешить несколько типов страниц

Я новичок в разработке WordPress (большинство из тех, что я когда-либо делал в области веб-дизайна / разработки, создает базовые HTML-сайты); поэтому это может быть очень простой вопрос, но я пытаюсь создать многостраничный сайт.

Я хочу 3 статических страницы, страницу «Главная страница», «О странице» и «Портфолио» и блог, который заполняется бэкэндом WordPress. Первоначально я собирался просто поместить блог в отдельный поддомен (например, blog.example.com ), однако я хочу заполнить список на всех страницах списком последних сообщений, чтобы я хотел сохранить все их в одном домене.

Тем не менее, я не уверен, как связывать страницы вместе, если я помещаю index.php , about.php , portfolio.php и blog.php в папку темы; index.php показывает, как ожидалось, однако, если я создаю ссылки следующим образом, он не работает (все href s являются пустыми строками):

 <ul class="nav"> <li><center><a id="nav_bar" href="<?php get_home_template() ?>">Home</a></center></li> <li><center><a id="nav_bar" href="<?php get_query_template('about') ?>">About</a></center></li> <li><center><a id="nav_bar" href="<?php get_query_template('portfolio') ?>">Portfolio</a></center></li> <li><center><a id="nav_bar" href="<?php get_query_template('blog') ?>">Blog</a></center></li> </ul> 

И если я направляю ссылки на папку wp-content, используя следующий синтаксис:

 <a id="nav_bar" href="<?php bloginfo('template_url') ?>/about.php">About</a> 

Ссылка отображается правильно, она указывает на файлы PHP в папке wp-content, но при навигации по этой странице она не может вызывать функции WordPress (т. get_header() не может быть найден).

Каков наилучший способ добиться того, что я хочу сделать?

Solutions Collecting From Web of "Как организовать файлы PHP, чтобы разрешить несколько типов страниц"

Вам нужно узнать, как работает иерархия шаблонов WordPress.

Это очень важно для любого человека, который хочет изучать WordPress или переносить свой нынешний опыт WordPress на следующий уровень, чтобы знать и понимать все различные аспекты иерархии шаблонов WordPress.

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

Вот список ссылок, которые вы должны читать сверху донизу:

  1. Разработка темы
  2. Иерархия шаблонов
  3. Детские темы
  4. Условные теги
  5. Шаги в шаблоны
  6. Петля в действии

Теперь для моего .02 в отношении вашей конкретной ситуации …

Создайте свои статические шаги в области администрирования WordPress Backend ( domain.com/wp-admin/ ). Дайте им название, измените «slug», если хотите, изменить URL-адрес страницы и вставить некоторый контент.

Прочтите ссылки, опубликованные ранее в моем ответе. Тогда вернитесь сюда.

Создайте файл page.php и поместите его в каталог ./wp-content/themes/<your-theme/ . Это будет ваш шаблон по умолчанию для всех «статических страниц» на вашем веб-сайте.

Теперь, если вы хотите разную функциональность или макет для определенной страницы, у вас есть несколько вариантов.

Вариант №1) Создайте отдельные файлы для каждой отдельной страницы. Вы можете сделать это, создав файл с именем page-<your-page-slug>.php или page-<your-page-ID>.php .

Вариант № 2) Используйте условные теги для каждой отдельной страницы в файле page.php .

Пример:

 if(is_page('about')){// Page with slug of "about". // do stuff } elseif(is_page(28)){// Page with ID of "28". // do stuff } elseif(is_front_page()){// Home page of your website. // do stuff } else{// Any other page. // do stuff } 

Теперь, если вы собираетесь более или менее жестко кодировать свои ссылки в своем макете … Рассмотрите возможность использования site_url(); ,

Пример: <a href="<?php echo site_url('/about/'); ?>">About</a>

Вы можете сделать это, используя фактическую информацию о странице.

 $page = get_post(28); if($page){ echo '<a href="'.get_permalink($page->ID).'">'.$page->post_title.'</a>'.PHP_EOL; } 

Теперь, если вы действительно хотели получить фантазию … Вы могли бы использовать глобальные переменные . Globalling текущего объекта post (a / k / a текущей страницы).

 if(is_page('about')){// Page with slug of "about". global $post; echo '<h1><a href="'.get_permalink($post->ID).'">'.$post->post_title.'</a></h1>'.PHP_EOL; } 

Следует также отметить, что при настройке своего «раздела блога» на вашем сайте вы должны проверить настройки чтения в разделе администрирования брандмауэра WordPress. WP Admin -> Settings -> Reading

Установите свою первую страницу и страницу для сообщений. Страница для сообщений – это место, где будет размещаться ваш блог. index.php является файлом шаблона по умолчанию для ваших сообщений в блоге. Вы можете настроить различные шаблоны для каждой области своего блога. home.php будет вашим файлом шаблонов по умолчанию для «главной страницы блога», category.php это все ваши сообщения в блоге, которые имеют назначенную категорию для этой должности. tag.php это все ваши сообщения в блоге, у которых есть назначенный тег для сообщения. и т.д…

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

Смотрите, если ваши файлы – это просто простые php-файлы (в любом случае не подключены к WordPress), функции WordPress не будут доступны в этих файлах. Если вы хотите создать разные страницы с разной структурой / макетом, вы должны сначала создать шаблоны в тему темы / ребенка, добавить новые страницы из панели управления администратора, а затем назначить им созданный шаблон –

1) Создать шаблон – http://codex.wordpress.org/Page_Templates

2) Добавить новую страницу из панели управления admin – http://codex.wordpress.org/Pages_Add_New_Screen

3) При добавлении страницы выберите шаблон среди созданных вами. Вы сможете определить их по имени.

Если вы добавили get_header (), get_footer () в свои PHP-файлы, это означает, что вы пытались создать ничего, кроме только шаблонов, но, похоже, они не загружены как шаблон правильно. См. Ссылку создания шаблона для более подробной информации. Обратите внимание: не забудьте указать имя шаблона при создании шаблона. Вы даже можете ссылаться на любой существующий шаблон в свою тему и просто скопировать его, переименовать имя файла, а также имя шаблона, настроить макет по своему усмотрению и назначить на любую страницу WordPress.

Кроме того, когда страницы готовы, вы можете просто добавить тему в меню навигации из самой панели мониторинга. http://codex.wordpress.org/WordPress_Menu_User_Guide

Если вы не хотите создавать новый шаблон и использовать существующие в теме, вы можете использовать их сразу, назначив их страницам панели управления администратора.