問題描述

我一直在搜索 Google,這是無濟於事。

我正在一個餐館的網站上工作,我有一個定製的帖子類型的菜餚,如:

$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 並獲得所有各種 main-ingredient 值的列表。

我發現這個參考,這正是我正在做的:Custom taxonomy listing page when no term set (all terms)

但解決方案對我來説並不奏效 – 當我去 myurl.com/main-ingredient 時,我仍然會收到 404

關於如何最好地做到這一點的任何建議?

最佳解決方案

沒有任何內置到 WordPress 為您的分類提供一個”index” 頁面,因為您的問題意味着應該有 (我同意,應該是!但沒有。)

相反,你必須破解它,一種方法是創建一個名為”Main Ingredient” 的頁面,其中包含一個 main-ingredient URL 段,併為您創建的主題 (可能稱為 「主要成分列表」) 分配一個頁面模板

這是一個起點; 也可以使用文件名 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="http://$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="http://$link">{$title}</a></li>";
  }
  echo '</ul>';
}
get_footer();

那麼這個頁面看起來像我的測試網站上的一些虛擬數據:

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。