Как отобразить код, если это не определенные страницы?
Я пытаюсь настроить условный оператор для отображения определенного кода, если пользователь находится на определенной странице. У меня работают страницы ссылок и работ студентов, но когда я добавляю условие "если не ссылка и не работа студента", я получаю ошибку unexpected T_BOOLEAN_AND. Как можно исправить это, чтобы перечислить страницы, для которых я не хочу использовать пользовательский код, и использовать просто page.php?
<?php
if (!is_page('links') && !is_page('student-work')) {
include(TEMPLATEPATH . '/pages/page.php');
} elseif (is_page('links')) {
query_posts('cat=2');
include(TEMPLATEPATH . '/pages/links.php');
} elseif (is_page('student-work')) {
query_posts('cat=4');
include(TEMPLATEPATH . '/pages/student-work.php');
}
?>

Не могли бы вы отредактировать ваш ответ и подробнее объяснить, почему это решает вопрос автора, а также предоставить любые ссылки, подтверждающие, как это решает проблему?

Это чистый PHP, а не WordPress, но в вашем исходном условном операторе есть лишняя скобка после !is_page('links')
, поэтому &&
оказывается снаружи, и PHP не знает, что с ним делать. В любом случае, лучше реорганизовать блок, например:
<?php
if (is_page('links')) {
query_posts('cat=2');
include(TEMPLATEPATH . '/pages/links.php');
} elseif (is_page('student-work')) {
query_posts('cat=4');
include(TEMPLATEPATH . '/pages/student-work.php');
}
else {
include(TEMPLATEPATH . '/pages/page.php');
}
?>
Что касается WordPress, вероятно, лучше использовать файлы шаблонов для конкретных страниц, такие как page-links.php или page-student-work.php
. Вы также можете использовать get_template_part()
вместо include, чтобы выполнить то же, что делает этот блок if/else, всего одной строкой, если вам по какой-то причине нужно оставить всё в одном файле.
