自定义分类术语模板筛选器

时间:2016-02-23 作者:Bhuvnesh Gupta

我想用自定义模板替换自定义分类术语模板。喜欢使用add_filter(\'single_template\',\'customFun\'); 替换单个自定义帖子类型模板。

我有一个自定义分类法,例如CustomCat 还有一些术语,例如hello cat.

当我查看hello cat时,我希望有我的自定义模板,即插件中的所有代码,如add_filter(\'single_template\');

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

我想您正在get_query_template() 功能:

    /**
     * Filter the path of the queried template by type.
     *
     * The dynamic portion of the hook name, `$type`, refers to the filename -- minus the file
     * extension and any non-alphanumeric characters delimiting words -- of the file to load.
     * This hook also applies to various types of files loaded as part of the Template Hierarchy.
     *
     * Possible values for `$type` include: \'index\', \'404\', \'archive\', \'author\', \'category\', \'tag\', \'taxonomy\', \'date\',
     * \'home\', \'front_page\', \'page\', \'paged\', \'search\', \'single\', \'singular\', and \'attachment\'.
     *
     * @since 1.5.0
     *
     * @param string $template Path to the template. See locate_template().
     */
    return apply_filters( "{$type}_template", $template );
在您的案例中,类型是taxonomy.

您提到了自己的自定义插件。因此,如果要覆盖hello-cat 自定义分类法的术语,在插件中使用自定义模板,然后可以在根插件文件中尝试以下操作:

add_filter( \'taxonomy_template\', function( $template )
{
    $mytemplate = __DIR__ . \'/templates/custom.php\';

    if( is_tax( \'some-custom-tax-slug\', \'hello-cat\' ) && is_readable( $mytemplate ) )
        $template =  $mytemplate;

    return $template;
} );
自定义模板放置在自定义插件文件夹中的位置,如:

/wp-content/plugins/my-plugin/templates/custom.php 

SO网友:Pieter Goosen

这里确实不需要任何过滤器或任何自定义模板。只需创建taxonomy-{$taxonomy}-{$term->slug}.php 子主题(或自己的主题)中的模板,其中:

  • $taxonomy 是分类法的名称

  • $term->slug 是这个术语的鼻涕虫。

    当您访问特定术语的存档页面时,WordPress将自动为该术语使用该模板

相关推荐

致命错误:未捕获错误:无法将WP_ERROR类型的对象用作/../plugins/rm-payment.php中的数组

我使用2个WordPress站点、1个WordPress站点到2个WordPress站点的远程支付系统。第一个是主网站;第二个网站的工作方式类似于处理贝宝支付的商户网站。我们将第一个网站的用户订单详细信息提取到第二个网站,以处理贝宝付款。但在获取第二个网站的网页时出现错误,但请记住,如果重新加载它一次,问题就解决了致命错误:未捕获错误:无法将WP\\u error类型的对象用作/中的数组/插件/rm支付。php:第231行 $response = wp_remote_post( $remote_url,