自定义税法子类别专用模板

时间:2018-05-16 作者:Fibonacci

我有一个自定义的帖子类型,我用自定义的分类法来管理它。我制作了一个模板:分类法品牌。php,以显示分类法的顶级类别。现在,我需要在另一个不同的模板中显示其中每一个的子类别。我想可以使用template\\u include过滤器,但我无法精确地实现,也无法评估哪个条件

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

您可以使用template_include 钩子加载分类法的特定模板。您需要更改my-taxonomy 使用特定的自定义分类法,并将brand-subcategories.php 无论模板名称是什么。

/**
 * Force Taxonomy Subcategories to new template
 *
 * @param String $template - Expected template path
 *
 * @return String $template
 */
function wpse303717_subcategory_template( $template ) {

    // We\'re not on a taxonomy page
    if( ! ( is_tax() && is_tax( \'my-taxonomy\' ) ) ) {
        return $template;
    }

    // Grab the queried object, _should_ be a term but make sure.
    $queried_object = get_queried_object();

    // We either don\'t have the right object OR we\'re on a top level category becuase $term->parent === 0
    if( isset( $queried_object->parent ) && empty( $queried_object->parent ) ) {
        return $template;
    }

    // Our template could be located anywhere, we could store it in a subdirectory but 
    // we would need to specify a relative path from the theme root to it.
    // Example: \'templates/brand-subcategories.php\'
    if( false !== ( $new_template = locate_template( \'brand-subcategories.php\' ) ) ) {
        $template = $new_template;
    }

    return $template;

}
add_filter( \'template_include\', \'wpse303717_subcategory_template\' );
如果您想加载每个子类别的特定模板,则需要对其进行测试$queried_object->term_id 与您期望的相比。但请注意,您的客户可能会删除这些条款,这会使您的代码失效。

结束

相关推荐