カスタム分類リストページ?


11

私はレストランのサイトで作業しており、料理用のカスタム投稿タイプがあります。

$args = array(
    'labels'=> $labels,
    'public'=> true,
    'publicly_queryable'=>true,
    'show_ui'=>true,
    'show_in_nav_menus'=>true,
    'query_var'=>'dish',
    'rewrite'=>true,
    'capability_type'=>'post',
    'hierarchicial'=>false,
    'menu_position'=>5,
    'supports'=>array(
        'title',
        'editor',
        'thumbnail',
        'excerpt',
        'custom-fields',
        'revisions'
    )   
);  

register_post_type('dish', $args);

使用したいカスタム分類法の例は次のとおりです。

register_taxonomy('Main Ingredient', array('dish'), array(
    'hierarchical' => true,
    'label' => 'Main Ingredient',
    'singular_label' => 'Main Ingredient',
    'query_var'=>true,
    'rewrite' => true)
);

カスタムの分類法は管理者で問題なく機能してmyurl.com/main-ingredient/porkおり、豚肉が入っているすべての料理のリストを表示して確認できます。

私がやりたいのはmyurl.com/main-ingredient、さまざまな主な成分値すべてのリストをヒットして取得できることです。

私はこのリファレンスを見つけました。これはまさに私がやろうとしていることです。

しかし、解決策は私のために機能していません-に行くとき、私はまだ404を得ています myurl.com/main-ingredient

これを行うための最善の方法に関する提案はありますか?

回答:


20

WordPressには、分類法の「インデックス」ページを提供するビルトインはありません。質問があることを示唆しているためです(そして同意する必要がありますが、そうではありません)。

代わりにそれをハックする必要があります。そのための1つの方法は、URLスラグを使用して「Main Ingredient」というページを作成し、「Main Ingredient List」という(おそらく)作成するテーマのページテンプレートをmain-ingredient割り当てることです

WordPressでページテンプレートを設定する場所を示すスクリーンショット
(ソース:mikeschinkel.com

ここが出発点です。多分page-main-ingredient-list.php あなたのページテンプレートのファイル名を使用してください:

<?php
/*
Template Name: Main Ingredient List
*/
get_header();
$main_ingredients = get_terms('main-ingredient');
foreach($main_ingredients as $main_ingredient) {
  $dishes = new WP_Query(array(
    'post_type' => 'dish',
    'post_per_page'=>-1,
    'taxonomy'=>'main-ingredient',
    'term' => $main_ingredient->slug,
  ));
  $link = get_term_link(intval($main_ingredient->term_id),'main-ingredient');
  echo "<h2><a href=\"{$link}\">{$main_ingredient->name}</a></h2>";
  echo '<ul>';
  while ( $dishes->have_posts() ) {
    $dishes->the_post();
    $link = get_permalink($post->ID);
    $title = get_the_title();
    echo "<li><a href=\"{$link}\">{$title}</a></li>";
  }
  echo '</ul>';
}
get_footer();

そして、これが私のテストサイトのいくつかのダミーデータでページがどのように見えるかです:

WordPressサイトの分類インデックスページのスクリーンショット


こんにちはマイク、そうです。それは役に立たない。

@Josh- ここで見つけたコードをテーマのfunctions.phpファイルに追加しからhttp://wp30.dev/main-ingredient/chicken/ wp30.devローカルテストサイトです)に移動しこのスクリーンショットを取得しました。それが機能しない場合は、プラグインまたはその他のコードが原因で、機能していません。
MikeSchinkel 2011年

返信マイクをありがとう。それは私にとってはうまくいきますが、私が解決しようとしている問題ではありません。分類の最上位に移動して、主要な成分のリストを取得しようとしています。つまり、URLから「鶏」を削除すると、404ページが表示されます。それが私が直面している問題です。

@ジョシュ-さて、私はそれを今見ます。今日はあまりにも多くの質問に答えてきました。ちなみに、WordPressに「組み込み」の方法であなたが求めているものを処理する方法はありません。自動的に存在することは非常に理にかなっていますが、現在はそうではありません。回避策であるアップデートを書きます。
MikeSchinkel 2011年

3
@ジョシュ- 「しかし、分類用語による投稿の表示とナビゲーションの優れた組み込み機能を失うのは嫌いです」:これで何かを失う方法がわからないので、何かが欠けているに違いありませんか?
MikeSchinkel 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.