web-dev-qa-db-ja.com

特定のページではない場合にコードを表示する方法

ユーザーが特定のページにいる場合、特定のコードを表示するように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');
            }
?>
3
Brett

私はこのコードを使ったばかりでそれは私のために働きます。うまくいけば、それはあなたの問題を解決します。

if( ! is_page( array( 'links', 'student-work' ) ) ) { /* ... */ }
4
Mohit Kumar

これは本当に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行に収まるようにすることもできます。

3
helenhousandi