私は私の "functions.php"に一種の "breadcrumb"関数を書き込もうとしています
自分が用語ページを表示しているかどうか、そして現在の用語を印刷したい場合は、クエリを実行します。
「term-page」とは、次のことを意味します。私は私のヘッダーにカテゴリの一種としてカスタム分類法(custom-post-typeに関連付けられている)のすべての用語をリストしています。私はこれをget_term_link($term->slug, 'my_taxonomy')
で行います。
ブレッドクラムのための私の新しい関数で、私がこのページの1つにいるかどうか質問して、この用語を印刷したいです。
まず、…やってる…
if ( is_taxonomy_hierarchical('my_taxonomy) ) {
echo "test";
しかし今、私の機能はこのmy_taxonomy
文字列に依存しています。私はすべての今後の分類法のためにこの機能を働きたいです。これどうやってするの?パラメータを必要としないis_category()
のような条件付きタグがあります。すべての条件付きまたは分類条件付きの条件式にこのパラメータが必要なのはなぜですか。
現在の用語を印刷するにはどうすればよいでしょうか。今のところ「テスト」とエコーしていますが、現在の用語を印刷したいのですが。
それについて何かアイデアはありますか?前もって感謝します。
更新:
function list_breadcrumbs() {
$q_object = get_queried_object();
$taxonomy = $q_object->taxonomy;
$seperator = " <span class='separator'>⟩</span> ";
if ( !is_home() ) {
echo "<a href='" . get_bloginfo('url') . "' title='Home'>Home</a>" . $seperator;
if ( is_category() ) {
$category = get_the_category();
echo "<span class='breadcrumb'>" . $category[0]->cat_name . "</span>";
} else if ( is_tax( $taxonomy ) ) {
echo "The Term Name";
} else if ( is_single() ) {
…
} else if ( is_page() ) {
…
get_queried_object()
が欲しいでしょう。これは非常に一般的な関数です - そして照会されたオブジェクトを返すだけなので - 単一の投稿の場合、これは投稿オブジェクトになります。
たとえば、返されるオブジェクトは次の形式になります。
Object (
[term_id] => 299
[name] => test
[slug] => test
[term_group] => 0
[term_taxonomy_id] => 317
[taxonomy] => event-category
[description] =>
[parent] => 0
[count] => 2
)
だから例えば:
$q_object = get_queried_object();
if( isset($q_object->taxonomy) ){
$taxonomy = $q_object->taxonomy;
}else{
//Not a taxonomy page
}
これを関数の中で使うには:
function wpse51753_breadcrumbs(){
if( !is_tax() && !is_tag() && !is_category() )
return;
//If we got this far we are on a taxonomy-term page
// (or a tag-term or category-term page)
$taxonomy = get_query_var( 'taxonomy' );
$queried_object = get_queried_object();
$term_id = (int) $queried_object->term_id;
//Echo breadcrumbs
}
次に、ブレッドクラムを表示する場所にテンプレートのwpse51753_breadcrumbs();
を追加します。