WordPressテーマに条件付きロジックを追加する方法

公開: 2021-02-25

WordPressを使用してWebサイトを構築すると、デザインと機能の両方の面でできることに関して大きな柔軟性が得られます。 また、テーマの開発を深めるにつれて、特定のページ、カテゴリ、または投稿タイプを特別なものにターゲティングする必要がある場合があります。 ここで、条件付きロジックによって作業がはるかに簡単になります。

条件付きロジックは、プログラミング言語(この場合はPHP)の強力な機能です。 基本的に、コードを使用して特定の条件が存在するかどうかを確認し、その条件が満たされている場合は特定の処理を実行できます。 この簡単な例は、ユーザーが現在当社のサイトのホームページにアクセスしているかどうかを確認することです。 条件付きロジックを使用して、その状況でスライダーまたは他の特別なコンテンツをロードすることを選択する場合があります。

WordPressに関しては、ソフトウェアに組み込まれている便利な条件付きタグがいくつかあり、あらゆる種類のシナリオをテストできます。 それらは十分に文書化されており、サイトに高レベルの機能をもたらすことができます。

今日は、より一般的に使用される条件付きタグのいくつかと、それらを自分のサイトに実装する方法を見ていきます。

条件付きタグの使用に関する注意

条件付きタグはPHPコードの一部であり、サイトのアクティブなテーマに含める必要があります。 テーマ内で条件付きロジックを使用できる場所はたくさんあります。

まだ行っていない場合は、テーマファイルがどのように機能するかを説明するために、WordPressテンプレート階層に精通することをお勧めします。

また、ライブサイトに新しいコードを実装する前に、開発(ステージング)環境をセットアップして、最初にテストすることをお勧めします。 PHPを誤って操作すると、サイトに恐ろしい「死の白い画面」が生じる可能性があることを忘れないでください。 したがって、ライブサイトで作業する前に、テストに細心の注意を払ってください。

家にいる()

これは開発者の間で大きな混乱を引き起こします。 タグを見ると、サイトのホームページをチェックするためにis_home()が使用されていると思います。 そうではありません。

実際には、WordPressダッシュボード内の[設定]> [読み取り]で設定されている投稿ページとして割り当てられているページを検索します。 デフォルトでは、WordPressはホームページを使用して投稿を一覧表示しますが、ほとんどのサイトは代わりに静的なホームページを使用する傾向があります。

したがって、たとえば、「ブログ」という名前のページを投稿ページとして割り当てた場合、 is_home()はそれを検索します。

 <?php // If this the Posts page, display a message. if ( is_home() ): echo '<h2>Thanks for visiting our blog!</h2>'; endif; ?>

is_front_page()

逆に、 is_front_page()は、静的であるかどうかに関係なく、サイトのホームとして設定されているページを検索します。 確かに、あなたがあなた自身のテーマを作成することを学んでいるとき、これは世界で最も明白なことではありません。 ただし、使用するタグを知ることは非常に重要です。

この特定のタグの良いところは、後でホームページとして別のページを割り当てたとしても、適切な場所をターゲットにすることです。 ページをターゲットにするより明確な方法がありますが、これは変更の場合にあなたをカバーし続けます。

 <?php // If this is the home page, show a special message. if ( is_front_page() ) { ?> <h1>Welcome</h1> <?php // Otherwise, show the page title. } else { ?> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php } ?>

is_single()およびis_page()

これらの各タグは、2つの機能を実行します。 is_single()は、現在のURLが投稿であるかどうかを確認します。 これは、標準のブログ投稿、添付ファイル、またはカスタム投稿タイプに属する可能性があります。

同様に、現在のURLがページの場合、 is_page()はtrueを返します。 デフォルトでは、両方のタグは、ページまたは投稿の傘下にあるすべてのコンテンツを対象としています。 これは、多くの条件付きタグに共通するスレッドです。

 <?php // Target all posts. if ( is_single() ): echo 'You are on a single post.'; endif; // Target all pages. if ( is_page() ): echo 'This is a page'; endif; ?>

ただし、IDまたはスラッグを追加することで、これらのタグを利用して特定の投稿またはページをターゲットにすることもできます。

 <?php // Target About Us if ( is_page( 'about-us' ) ): ?> <a href="#"></a> <?php endif; ?>

配列を使用すると、複数のコンテンツをターゲットにすることができます。

 <?php // Target About Us and Contact Us pages. if ( is_page( array('about-us', 'contact-us') ) ): ?> <a href="#"></a> <?php endif; ?>

is_tax()およびhas_term()

分類法は、サイトでのコンテンツの編成方法に大きな役割を果たします。 最も一般的な2つは、カテゴリとタグです。これらには独自の条件付きタグがあります。 しかし、WordPressを使用すると、独自の分類法を作成することもできます。

たとえば、サイトに音楽レビューが含まれている場合、「ジャンル」と呼ばれる分類法がある可能性があります。 そこから、「ロック」、「ヒップホップ」、「ジャズ」など、その分類内の特定のジャンルの音楽をリストすることができます。

is_tax()は、分類法のアーカイブページを対象としています。 私たちの音楽レビューの例にとどまると、このタグは、特定の各ジャンルのアーカイブページにいるときに起動(有効になります)します。

 <?php // Display a message on our Genre archive pages. if (is_tax('genre','rock','hip-hop','jazz') ): echo '<h2>This is a genre archive. Enjoy!</h2>'; endif; ?>

has_term()は、それが属する分類法に基づいて現在の投稿をターゲットにするために使用されます。 これは、たとえば、サイトの音楽の各ジャンルの投稿に特別なグラフィックを追加する場合に便利です。

 <?php // Show an image for the Rock genre. if (has_term('rock','genre') ): ?> <?php endif; ?>

is_page_template()

テーマのテンプレート階層に慣れたら、独自のカスタムページテンプレートを作成することをお勧めします。 is_page_template()を使用すると、(カスタムであるかどうかに関係なく)使用されている現在のページテンプレートをターゲットにできます。 ページテンプレートが使用されているかどうかを確認するか、特定のテンプレートを探すことができます。

ただし、特定のページテンプレートを探すときは注意が必要です。 このタグはファイル名の存在をチェックするため、そのテンプレートの名前が変更された場合、条件は機能しなくなる可能性があります。 ファイル名の変更を反映するようにコードを更新する必要があります。

 <?php // Add a search form to the Services page template. if (is_page_template('services.php') ): ?> <?php get_search_form(); ?> <?php endif; ?>

すべての条件が満たされました

これは、条件付きロジックの使用方法の簡単な紹介にすぎませんでしたが、もっと学びたいという欲求を刺激することを願っています。

条件をマスターすると、他の方法ではほぼ不可能な方法でサイトをカスタマイズできるようになります。

CMSを利用することのすべての利点を活用しながら、テーマの外観とレイアウトをきめ細かく制御できます。