web-dev-qa-db-ja.com

子供の分類用語を使ったカスタムパーマリンク

これは他の質問に似ているかもしれませんが、私のために働く決定的な答えを見つけることができなかったので私は私自身を投稿しています。

知っておくべきこと

カスタムの分類法(コレクション)を持つカスタムの投稿タイプ(商品)があります。私のコレクションの分類法は階層的です。たとえば、私は親コレクション(bathroom)を持っていますが、これには多数のサブコレクションがあります。

私がやろうとしていること

親コレクションと子コレクションの両方を含む私の製品のパーマリンクを取得しようとしています。

 http://<domain>/products/bathroom/collection-1/postname

私が試したことのあるもの

基本的に私は私のCPTと分類法を登録するときrewriteパラメータと 'post_type_link'フックで遊んでいました。

私はそれをうまく機能させることができた部分的に、つまりパーマリンクに親コレクションだけを表示することによって。

どんな助けでも大いに感謝されるでしょう、ありがとう。

また、私のパーマリンク構造は次のとおりです:/%category%/%postname%/

私のコードの一部

CPT /分類法の登録

 register_taxonomy( 'collection', array(  ), array(
      'label' => 'collections',
      'public' => TRUE,
      'show_ui' => TRUE,
      'hierarchical' => TRUE,
      'query_var' => 'collections',
      'rewrite' => TRUE
 ));

 register_post_type( 'product', array(
      'label' => 'products',
      'public' => TRUE,
      'publicly_queryable' => TRUE,
      'show_ui' => TRUE,
      'show_in_menu' => TRUE,
      'taxonomies' => array( 'collection' ),
      'supports' => array( 'title', 'editor', 'author', 'custom-fields' ),
      'rewrite' => array( 'slug' => 'products/%collection%', 'with_front' => false, 'hierarchical' => true )
 ));

flush_rewrite_rules();

投稿タイプリンクフック

 if( strpos( $permalink, '%collection%' ) === FALSE )
      return $permalink;

 $terms = wp_get_object_terms( $post->ID, 'collection' );
 $tax_slug = "";

 if( empty( $terms[0]->parent ) )
 {
      $tax_slug = $terms[0]->slug;// . "/" . $terms[1]-> slug;
      //Second part 404's my permalinks, so commented out
 }
 else
 {
      $tax_slug = $terms[1]->slug;// . "/" . $terms[0]-> slug;
      //Second part 404's my permalinks, so commented out
 }

 $permalink = str_replace( '%collection%', $tax_slug, $permalink );

 return $permalink;
1
Shane

私はあなたの質問に答えることができます!私はちょうど同じ問題を自分自身で持っていて、今日それを考え出したので、私はあなたがする必要があることを正確に知っています。

私は自分自身の質問投稿に 非常に詳細な指示とコード を書いています。それがどのように進むか、またはあなたがより多くの質問があるならば私に知らせてください。

0
Jeff