問題描述
我一直在搜索 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。