web-dev-qa-db-ja.com

分類/用語のポストタイプを取得する

ブレッドクラムをコーディングしていますが、最初の分類用語の前にCPT名を返します。

私のウェブサイトの構造は以下のようなものです:

- CPT name
  - Taxonomy Term
    - Taxonomy Child Term
      - Post Archive of the articles from the CPT and the two terms

ユーザーがアーカイブにいる場合、ブレッドクラムは次のように言う必要があります。

Home > CPT name > Parent Term > Child Term

現在、親と子の用語を返すことができますが、投稿タイプ名を返すにはどうすればよいですか。私はそれぞれのカスタム投稿タイプについてカスタム分類法を使っているので、次のような関数で投稿タイプを取得できればクールになります。

global $wp_query;
$term_obj = $wp_query->get_queried_object();
$thisTerm = $term_obj->term_id;
$thisTerm = get_term( $thisTerm );
$postType = get_category($thisTerm->posttype);

オブジェクトという用語にはposttype-キーがないことを私は知っていますが、このような分類法を得ることができます。登録されている分類法を入力して投稿タイプを取得する可能性はありますか?

2
Sam

StackOverflow user indextwo では、次のことを実行することをお勧めします。

関連付けられているすべての投稿タイプを含むオブジェクトを返す get_taxonomy( $taxonomy-slug ) 関数を使用します。コメントで示唆されているように、私達はそれから使用することができます
get_post_type_object( $post-type-slug ) オブジェクトと特異ラベルを取得します。

$post_type_names    = array(); // Array( 'post-type-slug' => 'Post Type Label' );
$taxonomy           = get_query_var( 'taxonomy' );

if( ! empty( $taxonomy ) ) {
    $tax_object = get_taxonomy( $taxonomy );
    $cpt_array  = $tax_object->object_type;

    if( ! empty( $cpt_array ) ) {
        $post_type_names = array_flip( $cpt_array );

        foreach( $post_type_names as $cpt_slug => $tmp ) {
            $post_type_names[ $cpt_slug ] = get_post_type_object( $cpt_slug )->labels->singular_name;
        }
    }
}

上記は一般的な配列でポストタイプのスラッグを返します。

Array(
    [post-type-slug]  => 'Post Type Name',
    [post-type-slug2] => 'Post Type Name 2',
)
1
Howdy_McGee