自定义岗位类型分类模板

时间:2015-02-16 作者:p2or

我已经创建了自定义帖子类型portfolio 和ataxonomy 当然

function taxonomies_portfolio() {
    $labels = array(
        \'name\'              => _x( \'Portfolio categories\', \'taxonomy general name\' ),
        \'singular_name\'     => _x( \'Portfolio categories\', \'taxonomy singular name\' ),
        \'search_items\'      => __( \'Query portfolio categories\' ),
        \'all_items\'         => __( \'All portfolio categories\' ),
        \'parent_item\'       => __( \'Parent category\' ),
        \'parent_item_colon\' => __( \'Parent category:\' ),
        \'edit_item\'         => __( \'Edit portfolio category\' ), 
        \'update_item\'       => __( \'Update portfolio category\' ),
        \'add_new_item\'      => __( \'Add Edit portfolio category\' ),
        \'new_item_name\'     => __( \'New portfolio category\' ),
        \'menu_name\'         => __( \'Categories\' ),
    );
    $args = array(
        \'labels\' => $labels,
        \'hierarchical\' => true,
        \'rewrite\' => true
    );
    register_taxonomy( \'portfolio_category\', \'portfolio\', $args );
}
add_action( \'init\', \'taxonomies_portfolio\', 0 );
是否可以创建1 template file to display all items of a single category? 我试图创建一个taxonomy.php 但没有成功。要使用的正确模板名称是什么?

2 个回复
最合适的回答,由SO网友:Manny Fleurmond 整理而成

根据上的Wordpress Codex页面Template Hierarchy, 创建一个名为的模板文件taxonomy-portfolio_category.php. WordPress将使用它来显示该分类法的存档。您还可以使用taxonomy-portfolio_category-{term_name}.php 为分类法中的特定术语创建模板。

SO网友:bob-12345

您不必使用WordPress标准Tempate来管理同一自定义帖子类型的多个分类法模板。

假设您有:1)portfolio 带1)的CPTpcat 分类法和在此分类法中创建的3个“站点”、“应用程序”和“设计”术语(此处显示了slug)。

Case 1: 您可能希望为其中任何一个显示相同的模板pcat 分类法。只需使用相同的单曲portfolio-signle.php 包含显示任何单个portfolio 统一记录。

Case 2: 现在假设您想为每个portfolio CPT记录取决于pcat 分配给该记录的分类术语(“站点”、“应用程序”、“设计”、“任何内容”)。

您可以使用相同的portfolio-signle.php 每个都有额外的部分模板pcat 学期

你的portfolio-signle.php 必须保存此代码:

<?php
get_header();
// Here you get the particular record of the `portfolio` CPT.
global $post;
// Get the array of \'pcat\' taxonomy terms attached to the record
// and take the slug of first term only (just for brevity)
$txslug = get_the_terms($post, \'pcat\')[0]->slug;
// Dynamically prepare the file name
$filename = get_template_directory() . \'/partials/_portfolio-single-\'.$txslug.\'.php\';
// Check if the file exists & readable
if (is_readable($filename)) {
    // The case when you  created the sub-template partial for the particular `pcat` term.
    include get_template_directory() . \'/partials/_portfolio-single-\'.$txslug.\'.php\';
} else {
    // The case for all other `pcat` taxonomy terms.
    include get_template_directory() . \'/partials/_portfolio-single-other.php\';
}
get_footer();
正如您从上面的代码中看到的,您必须为每个pcat 分配给帖子的分类术语实际上会处理分类术语的外观。

或/并创建/partials/portfolio-single-other.php 以统一的方式处理所有术语。

这将使您的主题文件保持良好的组织,并且无需代码开销,允许您灵活地管理不同分类术语的外观”。

注意:别忘了重新申报global $post; 在您的\'/partials/_portfolio-single-\'.$txslug.\'.php\' 模板。您将获得对要显示的CPT对象的访问权,无需支付额外费用。

结束

相关推荐

Using categories with pages

我正在尝试使用页面类别(而不是帖子)作为筛选子页面的一种方式。我正在努力创建一个“工作”页面,其中列出了所有的子项,并且每个子项也将对其应用类别。另一个子菜单将允许您选择类别,并且仅列出这些子页面。迄今为止:functions.php - Show categories meta box for pagesfunction myplugin_settings() { register_taxonomy_for_object_type(\'category\', \'page\');