web-dev-qa-db-ja.com

Term-pageの場合 - >現在の用語を取得する

私は私の "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'>&rang;</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() ) {
            …
1
mathiregister

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();を追加します。

4
Stephen Harris