web-dev-qa-db-ja.com

カスタム投稿タイプの条件付きタグis_page

Is_pageのドキュメントによれば、スラッグを引数WPとして指定すると、現在のページがスラッグで表されるページかどうかを知ることができます。おそらく私は間違ったナメクジを使っていますか?ただし、rewrite引数で使用されているパスと、 "slug"と見なされるビット、つまりCPTの登録に使用されている要素の両方を試してみました。

理解してもらうために、以下のコードスニペットを見つけてください。

'rewrite'               => array( 'slug' => 'faqs/archivio' )
  );

register_post_type( 'faqs', $args );

私はこれをカスタム投稿タイプに使用されているスラグを使ってやりましたが、私はこれを機能させることができませんでした。

それで2つの質問?

  1. この場合、is_pageは機能するはずですか?
  2. そうでなければ、何が最善の選択肢ですか?

ありがとうAndrea

2
Andrea Moro

カスタム投稿タイプの作成では、定義内に投稿タイプがあります。ページのみのデフォルト投稿タイプでもあります。カスタム投稿タイプを登録する場合は、ページではなく、この投稿タイプを確認してください。

コンディショナルタグis_singular

機能、コンディショナルタグ is_singular() 主な目的は、特異な投稿を表示しているかどうかを確認することです。ただし、次のコードスニペットに示すように、$post_typeパラメータを入力して、特定の投稿タイプの特異な投稿を表示しているかどうかを確認するためにも使用できます。

is_singular( 'your_custom_post_type' );

または異なる投稿タイプ

is_singular( array( 'your_custom_post_type_1', 'your_custom_post_type_2' ) );

デバッグのヒント

このコンテキストでトピックをデバッグするには、プラグイン デバッグオブジェクト を使用します。たぶんこれはあなたにとっても役立つでしょう、しばしばコードやコーデックスを読むのと同じくらい簡単です。次のプラグインのスクリーンショット、条件付きタグの結果を参照してください。CPTにis_page()is_single()を含めます。 enter image description here

3
bueltge

このようにして、さまざまなタイプの投稿のsingle.phpファイルをルーティングすることができます。

私はsingle-product.phpとsingle-blogs.phpという名前の2つのsingle.phpファイルを持っています。

今single.phpファイルで私はカスタム投稿タイプに基づいて異なる投稿をリダイレクトするために私の下のコードを書いた

if (get_post_type('product'))
{        
  include (TEMPLATEPATH . '/single-product.php');
}
else 
{         
 include (TEMPLATEPATH . '/single-blogs.php');
}

または

if (is_singular('product'))
{        
 include (TEMPLATEPATH . '/single-product.php');
}
else 
{         
  include (TEMPLATEPATH . '/single-blogs.php');
}
0