web-dev-qa-db-ja.com

分類法、用語、およびテンプレートファイル

私はそれに添付された投稿タイプ 'product'と階層的分類法 'types'を持っています。この分類には、「ドライクリーニング」、「洗濯機」などの用語があります。各用語にいくつかの下位用語があります。

私の状況では、私は表示する必要があります、例えば:

  1. http://example.com/types/washer - >すべての下位用語を表示する
  2. http://example.com/types/washer/ {subterm} - >投稿をすべて表示

私の質問は:

  1. 親用語のパーマリンクURLを取得するにはどうすればよいですか。上記のURLを試してみましたが、404になりました。
  2. この種の問題に対してテンプレートファイルはどのように機能しますか?
    1. ケース#1のtaxonomy-types-washer.phpは十分ですか?それともtaxonomy-types.phpを作成してそこにロジックを作成する必要がありますか?
    2. 私の考えでは、 テンプレート階層 をスキャンした後、すべてのサブ用語を一覧表示するにはtaxonomy-types-{term_parent}.php、サブ用語ですべての商品を一覧表示するにはtaxonomy-types.phpが必要になるでしょう。
    3. 最終的に、各商品を表示するには、single-product.phpを作成する必要があります。
  3. ちょっと無関係な問題投稿がないとarchive-{posttype}.phpは機能しません。これに対する解決策はありますか? (私は別の質問を作成するか、これに固執する必要があります)?

_ update _

私は私のrewrite_rulesオプションをチェックしました、そしてそれは[タイプ]を全くリストしません。理由はわかりません。それをテストするために、私のスラッグをproduct-typesに変えて、パーマリンクをフラッシュして、これをリストします:

[product-types/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/([^/]+)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/([^/]+)/?$] => index.php?types=$matches[1]

それで私はそれが今登録されていると思います。私はそれが404に行くURL product-types/washerをロードしようとします。私はURL index.php?types=washerをロードしようとします。それも、404行きます。今、私はこのファイルを持っています:

  • taxonomy-types-washer.php
  • taxonomy-types.php

だから、私はこれが何が悪いのかわかりません:(。

UPDATE#2

私は問題を見つけます。 'rewrite'=>array('hierarchical'=>true)を逃したからです

これが新しいrewrite_rulesです。

[product-types/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/(feed|rdf|rss|rss2|atom)/?$] => index.php?types=$matches[1]&feed=$matches[2]
[product-types/(.+?)/page/?([0-9]{1,})/?$] => index.php?types=$matches[1]&paged=$matches[2]
[product-types/(.+?)/?$] => index.php?types=$matches[1]
7
ariefbayu

これらのタイプのURLはWP 3.1以降でサポートされています。

register_taxonomy( 'types', 'post', array(
  'hierarchical' => true,
  'rewrite' => array( 'hierarchical' => true ),
  ...
);

変更を加えた後は、必ず書き換え規則をフラッシュしてください。

親用語と子用語の両方に使用するテンプレートはtaxonomy-types.phpです。

$current_term = get_queried_object();

if ( 0 == $current_term->parent ) {
  // it's a parent term; display it's child terms using wp_list_categories() etc.
} else {
  // it's a child term; display the posts using The Loop etc.
}
6
scribu