在分类页面上列出带有链接的自定义分类术语

时间:2013-10-28 作者:codeview

我已经在我的函数中注册了自定义的post类型。“Wines”的php文件,代码如下:

function customposttype_wines() {

$labels = array(
    \'name\'                => \'Wines\',
    \'singular_name\'       => \'Wine\',
    \'menu_name\'           => \'Wines\',
    \'parent_item_colon\'   => \'Parent Wine\',
    \'all_items\'           => \'All Wines\',
    \'view_item\'           => \'View Wine\',
    \'add_new_item\'        => \'Add New Wine\',
    \'add_new\'             => \'+\',
    \'edit_item\'           => \'Edit Wine\',
    \'update_item\'         => \'Update Wine\',
    \'search_items\'        => \'Search Wines\',
    \'not_found\'           => \'No Wines found\',
    \'not_found_in_trash\'  => \'No Wines found in Trash\',
);
$args = array(
    \'label\'               => \'wines\',
    \'description\'         => \'Wine Reviews\',
    \'labels\'              => $labels,
    \'supports\'            => array( \'title\', ),
    \'unset\'            => array (\'date\'),
    \'hierarchical\'        => false,
    \'public\'              => true,
    \'show_ui\'             => true,
    \'show_in_menu\'        => true,
    \'show_in_nav_menus\'   => true,
    \'show_in_admin_bar\'   => true,
    \'menu_position\'       => 5,
    \'can_export\'          => true,
    \'has_archive\'         => true,
    \'exclude_from_search\' => false,
    \'publicly_queryable\'  => true,
    \'capability_type\'     => \'post\',
);
register_post_type( 
                \'wines\',
                $args 
                );

}
add_action( \'init\', \'customposttype_wines\', 0 );
并使用此代码注册了9个自定义分类法(品牌、地区、葡萄等)(仅使用<XXX> 为每个更改):

function customtaxonomy_<XXX> ()  {

$labels = array(
    \'name\'                       => \'<XXX>\',
    \'singular_name\'              => \'<XXX>\',
    \'menu_name\'                  => \'<XXX>s\',
    \'all_items\'                  => \'All <XXX>s\',
    \'parent_item\'                => \'Parent <XXX>\',
    \'parent_item_colon\'          => \'Parent <XXX>:\',
    \'new_item_name\'              => \'New <XXX> Name\',
    \'add_new_item\'               => \'Add New <XXX>\',
    \'edit_item\'                  => \'Edit <XXX>\',
    \'update_item\'                => \'Update <XXX>\',
    \'separate_items_with_commas\' => \'Separate <XXX>s w/commas\',
    \'search_items\'               => \'Search <XXX>s\',
    \'add_or_remove_items\'        => \'Add or Remove <XXX>s\',
    \'choose_from_most_used\'      => \'Choose from the most used <XXX>s\',
);
$args = array(
    \'labels\'                     => $labels,
    \'hierarchical\'               => true,
    \'public\'                     => true,
    \'show_ui\'                    => true,
    \'show_admin_column\'          => true,
    \'show_in_nav_menus\'          => true,
    \'show_tagcloud\'              => true,
    \'query_var\'                  => true,
);
register_taxonomy( 
    \'<XXX>s\',
    \'wines\',
    $args 
);
}
add_action( \'init\', \'customtaxonomy_<XXX>\', 0 );
现在我试图在每个的父页面上显示自定义分类术语的列表,所以在访问www.mywebsite时。com/葡萄酒/<XXX> 有一个列表,其中包含已输入的所有术语的链接。

现在当我访问www.mywebsite时。com/葡萄酒/<XXX> 我刚看到404。php错误页。但是,如果我访问分类术语页面,我会很好地看到其中的帖子,即:www.mywebsite。com/葡萄酒/<XXX>/学期

我尝试使用分类模板层次结构页面,taxonomy-<XXX>.php 但它不会加载,仍然只显示404。php。

在这里拉头发,非常感谢您的帮助。

3 个回复
最合适的回答,由SO网友:codeview 整理而成

我没能找到一个解决办法,按照我想要的/我认为可以的方式来做。所以决定命名taxonomies 单数名称(即:品牌、葡萄、地区),然后创建pages 使用相同名称的复数(即:品牌、葡萄、地区)和page 我必须使用get_terms 用于特定taxonomy 能够链接到每个分类法下创建的每个术语。但现在我不能get_terms 工作。啊!

SO网友:Oleg Butuzov

更仔细地阅读register_taxonomy, 您会注意到,您忘记了一个重写参数,该参数为您的分类法创建了漂亮的链接(重写+链接生成)。至于列出您可以使用的分类法wp_list_categories 或任何other 备选方案。

SO网友:helgatheviking

如果您得到的是404,您可能需要重新保存永久链接。

如果希望所有分类法都显示相同的分类法,并且不需要担心任何其他自定义分类法,那么可以在taxonomy.php 样板如果您有其他分类法,您可以通过template_include 滤器

function wpa_120317_template_include($template) {
        $taxonomies = array( \'XXX\', \'YYY\', \'ZZZ\' );
    if ( is_tax( $taxonomies ) ){
        $template = get_stylesheet_directory() . \'/custom-taxonomy-for-wines.php\';
    }
    return $template;
}
add_filter( \'template_include\', \'wpa_120317_template_include\' );
然后在这个custom-taxonomy-for-wines.php 模板您可以包括以下代码,这些代码将显示指向该存档中所有术语的链接列表。

$obj = get_queried_object();
if( isset($obj->taxonomy)){
    $terms = get_terms( $obj->taxonomy );
    if ( $terms && ! is_wp_error( $terms ) ){
        echo \'<ul class="term-list">\';
        foreach( $terms as $term ){
            printf( \'<li><a href="%s" title="%s">%s</a></li>\', get_term_link( $term ), esc_attr( __(\'Link to \') . $term->name ), $term->name );
        }
        echo \'</ul>\';
    }
}

结束

相关推荐

列出类别(Wp_Terms)和统计帖子数量

我有一个问题(当然),我要直截了当地说:我需要列出所有自定义类别,并计算每个类别的帖子。第1类(xx帖子)第2类(yy帖子)等</我尝试了几个问题,但没有成功。所有这些类别都存储在wp\\u terms表中,既然我看到wp\\u terms和帖子之间显然没有任何关联,我该如何列出它们毫无疑问,我尝试了wp\\u list\\u类别,但它只显示“未分类”,因为我使用的网站使用自定义帖子而不是“默认”类别。提前感谢!