ユーザーが特定のページにいる場合、特定のコードを表示するようにifステートメントを設定しようとしています。リンクと生徒の作業ページが機能するようにしましたが、リンクと生徒の作業でない場合を追加すると、予期しない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');
}
?>
私はこのコードを使ったばかりでそれは私のために働きます。うまくいけば、それはあなたの問題を解決します。
if( ! is_page( array( 'links', 'student-work' ) ) ) { /* ... */ }
これは本当にWPではなくPHPにすぎませんが、あなたの最初のif文は!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 or page-student-work.php
のようなページ固有のテンプレートファイルを使うほうがいいでしょう。何らかの理由でこれをすべて1つのファイルに保存する必要がある場合は、include /の代わりにget_template_part()
を使用して、if/elseブロックが1行に収まるようにすることもできます。