自定义分类列表页面?


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找到所有主要成分值的列表。

我找到了这个参考,这正是我想要做的。

但是该解决方案对我不起作用-转到 myurl.com/main-ingredient

关于如何最好地做到这一点的任何建议?

Answers:


20

WordPress内置没有任何东西可以为您的分类法提供“索引”页面,因为您的问题暗示应该存在(我同意,应该存在!但是没有。)

取而代之的是,您必须对其进行破解,而一种方法是创建一个带有URL链接的名为“主要成分” 的页面,并为您要创建(也许)名为“主要成分列表”的主题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年

感谢Mike的回复。这确实对我有用,但不是我要解决的问题。我正在尝试通过进入分类法的顶层来列出主要成分。换句话说,如果您从网址中消除“鸡”,则应该获得404页面。这就是我遇到的问题。

@Josh-好的,我现在知道了。抱歉,我今天回答了太多问题。仅供参考,WordPress中没有任何“内置”方式来处理您的要求。将其自动存在会很有意义,但目前还没有。我将写一个更新来解决此问题。
MikeSchinkel 2011年

3
@Josh- “但是我讨厌通过分类学术语失去帖子查看和导航的强大内置功能”:我一定错过了一些东西,因为我看不到您怎么松开它?
MikeSchinkel 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.