WordPressで条件付きタグを使用する方法

公開: 2020-06-09

私がWordPressで最も気に入っていることの1つは、開発者としての作業を大幅に簡素化する多くの機能が含まれていることです。 たとえば、テキストをエスケープしてHTMLタグ属性に安全に追加できるesc_htmlや、テキストをエスケープしてHTMLページに安全に含めることができるesc_attrなどの関数について考えてみます。 または、ユーザーから受け取ったデータをサニタイズする必要がある関数のいくつかを見てください: sanitize_text_fieldsanitize_textarea_fieldsanitize_email 。 あなたはこれらの明確に定義された関数にとても慣れているので、WordPressの領域外で何かを開発しなければならず、それらがもはや利用できないことに気付くと、本当にそれらを見逃します!

WordPressで開発するときに自由に使える機能のコレクションは、信じられないほど膨大です。 そして、私たちがそれらに精通しているほど、高品質のコードを書くのが簡単になります。

今日は、WordPressの条件付きタグについてお話ししたいと思います。それらが何であるか、それらをどのように使用するか、それらについて誤解を招く可能性があるもの、そしてなぜそれらが非常に役立つのか。 プラグインまたはテーマの開発者で、まだそれらを知らない場合は、この投稿をお見逃しなく。

WordPressの条件付きタグとは何ですか?

条件付きタグは、WordPressで定義された関数であり、その結果はブール値になります(つまり、 trueまたはfalseのいずれかになります)。 これらは、プラグインとテーマの両方で使用できる関数であり、レンダリングしようとしているコンテンツに基づいて条件付きの決定を行います。

条件付きタグの優れている点は、一般に、それらの名前が自明であり、非常に理解しやすいコードになることです。 たとえば、プラグインで条件付きタグis_stickyを使用する場合、WordPressループ内でスティッキー投稿を処理していると、明らかにtrueが返されます。 そのセマンティクスについては間違いありませんよね?

いくつかの例を始める前に、条件付きタグは、訪問者が要求したコンテンツをWordPressが判断した場合にのみ使用できることに注意してください。 以前にそれらを使用しようとすると、結果は常にfalseになります。 つまり、 posts_selectionアクションが実行された後にのみ使用できます。

最も一般的な条件付きタグ

WordPressのほとんどの条件付きタグはis_で始まります。これは、「何とか何とか」のような質問への回答だからです。 はブール値です:「yes」または「no」のいずれか。 ただし、残念ながら、この基準が常に守られているわけではありません(以下で説明します)。

WordPressには、必要に応じて使い慣れた条件付きタグが多数あります。 しかし、非常に一般的なものはかなり多く、それらを早く知るほど良いです。 それでは、それらを詳しく見てみましょう。

  • is_single 。 現在の要素がWordPressの投稿であるか、他のカスタム投稿タイプ(WooCommerce製品など)のインスタンスであるかを確認します。
  • is_page 。 現在の要素がWordPressページであるかどうかをチェックします。
  • is_attachment 。 現在の要素が添付ファイルであるかどうかをチェックします。 添付ファイルは、画像、ビデオ、ファイルなど、メディアライブラリにアップロードするファイルです。
  • is_singular 。 前の3つの関数のいずれかがtrueであるかどうかをチェックします。 つまり、現在の要素が投稿、ページ、添付ファイル、またはその他の投稿タイプであるかどうかを確認します。
  • comments_open 。 訪問者が現在の要素にコメントできる場合はtrueを返します。 見る? ここに、条件付きタグがis_で始まらない例があります。
  • is_category 。 現在、カテゴリアーカイブページを表示しているかどうかを確認します。
  • in_category 。 現在の投稿が指定されたカテゴリにある場合はtrueを返します。
  • is_tag 。 現在タグアーカイブページを見ているかどうかをチェックします。
  • has_tag 。 指定されたタグを使用して現在の投稿がタグ付けされているかどうかを確認します。
  • is_main_query 。 WordPressのメインループに入っているかどうかをチェックします。

誤解を招く可能性のある条件付きタグがあることをご存知ですか?

条件付きタグの名前が、評価しているように見えるものと実際に評価しているものが異なるため、混乱を招く可能性がある場合があります。

  • is_admin 。 この関数は、現在のユーザーが管理者であるかどうかをチェックすると思うかもしれませんね。 違う! WordPressダッシュボード内のページにいるのか(つまり、結果がtrueになるのか)、フロントエンドにいるのか(つまり、 false )をチェックします。
  • is_home 。 私は、この関数が現在のページがあなたのホームページであるかどうかをチェックすると思っていました。 たとえば、当社のWebサイトでは、 https://neliosoftware.com //neliosoftware.comになります。 しかし残念ながら、そうではありません。 WordPressはブログプラットフォームとして生まれました。これは「レガシーコード」の一例だと思います。 is_homeは、現在のページがブログページであるかどうかを確認する条件関数です。 したがって、たとえば、WordPressのデフォルト設定を使用している場合、訪問者がホームページ( https://yourweb.com )にアクセスすると、 is_homeは実際にtrueを返します。これは、そのページに最新のブログ投稿が表示されるためです。 ただし、ブログページを別の設定( https://yourweb.com/blogなど)に設定すると、訪問者がhttps://yourweb.com/blogを要求した場合はis_hometrueになり、それ以外の場合はfalseになります。
  • is_front_page 。 そしてこれは、訪問者が「ホームページ」にいるときに通知する条件付きタグです。
  • is_dynamic_sidebar 。 この関数は、テーマに1つ以上のウィジェットサイドバーがあるかどうかをチェックし、ある場合は、それらのサイドバーの少なくとも1つが空でない場合はtrueを返します。

条件付きタグのパラメータ化

ほとんどの条件付きタグはパラメーターなしで呼び出すことができる関数ですが、それらの多くはパラメーターをサポートしています。 それらを使用すると、現在の投稿が満たすべき基準についてより具体的にすることができます。 そして、彼らはこれを非常に論理的な方法で行います。

使用している特定の関数に応じて、現在の要素が特定のIDまたは特定のスラッグを持っているかどうか、特定の投稿タイプのインスタンスであるかどうか、または特定のタイトルを持っているかどうかを確認したい場合があります。 例えば:

  • is_singular( 'product' )は、現在の要素がproductであるかどうかをチェックします。
  • is_page( 'Contact Us' )は、現在のページのタイトルが「お問い合わせ」であるかどうかを確認します。 この関数はさまざまなタイプの引数を受け入れ、提供する内容に応じて、どちらか一方をチェックします。 たとえば、現在の要素に特定のID、特定のタイトル、またはスラッグがあるかどうかを確認できます。 かなりきちんとしていますねリストをパラメータとして使用することもできます。
  • is_single( [ 5, 10, 11 ] )は、現在の要素のIDが5、10、または11のいずれかであるかどうかをチェックします。これはis_pageと非常によく似ていますが、前述したように、ページ以外の投稿に対して機能します。

条件付きタグの使用方法

条件付きタグが役立つ可能性のあるいくつかの例を見てみましょう。

テンプレートのカスタマイズ

ご想像のとおり、条件付きタグは明らかにテーマで役立ちます。 ある時点で表示されているコンテンツのタイプに応じてテーマに何らかの情報を表示させたい場合(これは私たちが頻繁に行いたいことです)、条件付きタグはあなたの味方です:

 <?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...

これにより、さまざまなタイプのコンテンツに同じテンプレートを使用し、条件付きタグを使用してそれぞれをカスタマイズできます。

条件付きでアセットをキューに入れる

ただし、条件付きタグはプラグイン開発者にとっても非常に便利です。 具体的には、条件付きタグから取得した結果に応じて、プラグインの一部を条件付きで読み込むのに役立ちます。

たとえば、ブログ投稿にある種の機能を追加するプラグインを開発していると想像してください。 この機能では、スクリプトとスタイルシートをフロントエンドにエンキューする必要があるとします。 WordPressにスクリプトとスタイルをエンキューするために、 wp_enqueue_scriptsというフィルターがあります。

 function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

前のスニペットの問題は、訪問者が何を要求したかに関係なく、常にアセットをキューに入れることです。 wp_enqueue_scriptsが実行されるたびに(そしてすべてのフロントエンドリクエストで実行されます)、コールバック関数が呼び出され、スクリプトとスタイルシートが追加されます。 ただし、この機能はブログ投稿にのみ影響するため、これらのアセットを常にキューに入れる必要があるのでしょうか。 もちろん違います! そして、適切な条件付きタグを使用することでこれを改善できます。

 function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

要約すれば

WordPressの条件付きタグを使用すると、コンテンツのさまざまな基準をテストし、それに基づいて何が起こるかを適応させることができます。 それらは非常に単純ですが、コードをより理解しやすく効率的にする非常に便利な関数です。

今日、何かを学んだことを願っています。いつものように、質問やコメントがあれば、下のコメントセクションでお知らせください。

UnsplashのJustinLuebkeによる注目の画像。