WordPressで条件付きタグを使用する
公開: 2012-12-27特定の条件が満たされ、yesを返すことに基づいて、テーマのさまざまなフック位置でカスタム関数を実行する方法を見てみましょう。
Genesisのようなプレミアムテーマフレームワークを使用している場合は、ユーザーガイドにアクセスできます。
ユーザーガイドには通常、カスタム関数を含むコードスニペットが含まれています。
これらのカスタム関数は、テーマアクションフックを使用して特定のテーマの場所で実行できます。
必要なのは、コードスニペットを子テーマのfunctions.phpファイルに貼り付けて、テーマ関数をカスタマイズすることだけです。
各テーマフレームワークは異なるフックを使用しますが、それらはほとんど同じことを行い、次のように異なる名前が付けられています。
thesis_after_post genesis_after_post woo_post_after
これらの3つの例はすべて、投稿が終了した後に実行されます。ここでは、ウィジェット領域、バナー、またはソーシャル共有/フォローボタン付きの電子メールオプトインボックスを追加できます。
しかし、カスタム関数を次のような特定の条件に基づいて特定のフック位置でのみ実行したい場合はどうでしょうか。 例えば:
- 単一の投稿のみ:is_single()
- 特定のカテゴリの投稿のみ:is_category()
- アーカイブページのみ:is_archive()
- ホームページのみ:is_home()
テーマフックの場所で実行されるカスタム関数に条件付きタグを追加すると、条件がyesを返した場合にのみ関数を実行できます。
カスタム関数の使用に慣れ、テーマアクションフックがどこでどのように機能するかを理解したら、一部の開発者が呼び出す条件タグまたは条件ステートメントを使用して、さらに一歩進むことができます。
では、条件付きステートメントをどのように使用しますか?
条件付きタグの例
WordPressのデザイナーだけでなく、テーマやプラグインの開発者が使用する一般的な条件付きタグを次に示します。
is_home() is_category() is_single() is_page()
まず、複数のステートメントに基づく条件付きタグの使用を見てみましょう。
is_single&in_category
if (is_single() && in_category('134'))
if (is_single() && in_category('web-design'))
これらのコードスニペットはどちらもまったく同じことを行い、2つの条件付きタグが含まれています。
1つ目はカテゴリID134を使用し、2つ目はカテゴリスラッグ「web-design」を使用します。
このコードに含める関数は、投稿IDが134またはページスラッグ「web-design」を含むカテゴリの単一の投稿でのみ実行されます。 これは明らかにウェブデザインのカテゴリーです。
パラメーター
上記の例でわかるように、次のような条件付きタグでさまざまなパラメータを使用できます。
- 投稿ID
- 記事のタイトル
- ポストスラッグ
is_home()タグのようないくつかの条件付きタグは、おそらく実際にはパラメータを必要としないため、パラメータを除外しません。
is_page
if (is_page('4289'))
if (is_page('contact'))
これらの条件付きタグはどちらもまったく同じことをします。
1つ目は4289のページ投稿IDを使用し、2つ目はページ名とスラッグ「contact」を使用します。
このタグに含める機能は、連絡先ページでのみ実行されます。
ホームページ条件付きタグ
is_homeタグを使用する最も一般的な使用法は、ホームページにのみ何かを表示するか、関数からホームページを除外することです。
家にいる
if (!is_home()
このコードには!が含まれていますhome_page条件付きタグの前にあるため、関数からホームページが除外されます。
if (is_home()
このコードは、ホームページにのみ適用される条件を作成します。
実例
コードエディタを使用して次のコードをコピーして子テーマ関数ファイルに貼り付けると、単一の投稿でのみヘッダーの後にテキストが印刷されます。
add_action( 'genesis_entry_footer', 'add_content_after_single_posts' ); function add_content_after_single_posts() { if ( is_singular('post') ) { echo 'Content Added After Single Post Entry Footer'; } }
上記のコードは、 is_singular('post')
条件付きタグでgenesis_entry_footer
フック位置を使用し、コンテンツの後にテキストを単一の投稿にのみ出力します。 これは、テーマアクションフックでカスタム関数で条件付きタグを使用する方法を示す典型的な例です。
配列付きの条件付きタグ
条件文に配列を追加することもできます。
is_page(配列
if (is_page(array('contact','37290'))
この配列内にコンマで区切ってページを含めるだけで、この配列にページを追加できます。
この関数は、連絡先ページと37290の投稿IDを含むページでのみ実行されます。
テキスト/ HTMLの出力
単にテキストまたはHTMLを表示したい場合は、テーマアクションフックに条件ステートメントを追加できます。 これを行う最も簡単な方法は、フックプラグインを使用して条件付きタグをHTMLに貼り付けることです。
if ( ! is_home()) { echo'Your Text Here'; }
アクションフックを使用した一般的な関数を使用して、条件付きタグを追加してみましょう。
創世記の条件付きタグ
StudioPressテーマで使用するGenesisテーマコードスニペットの1つを簡単に追加し、コードに条件付きタグを含めることができます。
/** Add custom body class to video category */ add_filter( 'body_class', 'add_body_class' ); function add_body_class( $classes ) { if ( is_category( 'video-tutorials' ) ) $classes[] = 'custom-class'; return $classes; }
このコードを使用すると、ユーザーはカスタムクラスを使用してビデオカテゴリページのスタイルを設定できます。
使用されるパラメーターはビデオチュートリアルのスラッグですが、条件付きタグでpost.idまたはtitleを使用できます。
論文の条件付きタグ
DIYテーマのユーザーガイドからカスタム関数を取得し、条件付きステートメントを追加しましょう。
function hide_nav_menu() { if(is_page ( 'contact-page' ) ) remove_action ( 'thesis_hook_before_header', 'thesis_nav_menu' ); } add_action ( 'thesis_hook_before_html','hide_nav_menu' );
これにより、連絡先ページのナビゲーションメニューのみが非表示になります。
ページスラッグ、投稿ID、ページ名など、連絡先ページにさまざまなパラメータを使用できます。
コードをどこに置くか?
プレミアムテーマフレームワークを使用している場合は、コードを子テーマのfunctions.phpファイルに貼り付けることができます。
これらのフレームワークはすべて、条件付きタグに基づいてコードを実行するフックの場所にコードを貼り付けることができるフックプラグインまたはマネージャーを提供します。
- ウーフックマネージャー
- ジェネシスシンプルフック
- 論文、ヘッドウェイ、ワードプレスフック
明らかに、フックマネージャーを使用する場合は、コードにアクションフックを含める必要はありません。
もう1つのオプションは、条件タグを、条件に基づいて関数を実行する場所のテーマテンプレートファイルに直接貼り付けることです。 テーマを更新するとコードが失われるため、これはベストプラクティスではありません。
子テーマを作成し、そこでテンプレートファイルに変更を加えるためのベストプラクティスは常にあります。 さらに良いことに、テーマ開発者がすでに作成したカスタム関数を使用し、テストで機能することが証明されたら、条件付きタグを使用してコードを子テーマ関数ファイルに貼り付けます。
WordPressの条件付きタグと例
WordPressコーデックスの例を含むすべてのWordPress条件付きタグのリストがあります。
テーマ固有の条件付きタグ
一部のプレミアムテーマでは、テーマフレームワークに固有の独自の条件付きタグも使用されます。
Woo Commerceは次のいずれかです。例:
is_woocommerce() - Returns true if on a page which uses WooCommerce templates is_product_category() - Returns true when viewing a product category archive is_checkout() - Returns true on the checkout page.
WooCommerceでの条件付きタグの使用の詳細をご覧ください。
結論
開発者によってテストされた広範囲のコードスニペットを提供するテーマを使用することは、大きなボーナスです。 このようにして、WordPressが提供する条件付きタグのいずれかを選択し、それをコードスニペットに追加して、テーマを好きなようにカスタマイズできます。