Template_locate()发布wordpress

时间:2015-10-02 10:32:16

标签: wordpress plugins

为了在我的插件文件中重定向模板,我使用了php和wordpress功能,并且工作正常。

function wpc_template_chooser($wpc_template){
global $wp_query;
$wpc_plugindir = dirname(__FILE__);

$wpc_post_type = get_query_var('post_type');

if( $wpc_post_type == 'wpcproduct' ){
    return $wpc_plugindir . '/themefiles/single-wpcproduct.php';
}

if (is_tax('wpccategories')) {
    return $wpc_plugindir . '/themefiles/taxonomy-wpccategories.php';
}

if (is_tax('wpctags')) {
    return $wpc_plugindir . '/themefiles/taxonomy-wpctags.php';
}

return $wpc_template;   

但是在其他插件中我使用OOP来定位模板。它也工作正常。 但是使用OOP来处理结果我使用了Template-locate()。 像这样的东西

function kbe_template_chooser($template){

$template_path = apply_filters( 'kbe_template_path', 'wp_knowledgebase/' );

$find = array();
$file = '';

if ( is_single() && get_post_type() == 'kbe_knowledgebase' ) {

    $file   = 'single-kbe_knowledgebase.php';
    $find[] = $file;
    $find[] = $template_path . $file;

} elseif ( is_tax('kbe_taxonomy') || is_tax( 'kbe_tags') ) {

    $term   = get_queried_object();

    if ( is_tax( 'kbe_taxonomy' ) || is_tax( 'kbe_tags' ) ) {
        $file = 'taxonomy-' . $term->taxonomy . '.php';
    } else {
        $file = 'archive.php';
    }

    $find[] = 'taxonomy-' . $term->taxonomy . '-' . $term->slug . '.php';
    $find[] = $template_path . 'taxonomy-' . $term->taxonomy . '-' . $term->slug . '.php';
    $find[] = 'taxonomy-' . $term->taxonomy . '.php';
    $find[] = $template_path . 'taxonomy-' . $term->taxonomy . '.php';
    $find[] = $file;
    $find[] = $template_path . $file;

} elseif ( is_post_type_archive( 'kbe_knowledgebase' ) || is_page( get_option('kbe_archive_page_id' ) ) ) {

    $file   = 'archive-kbe_knowledgebase.php';
    $find[] = $file;
    $find[] = $template_path . $file;

}

if ( $file ) {
    $template       = locate_template( array_unique( $find ) );
    if ( ! $template ) {
        $template = trailingslashit( dirname(__FILE__) ) . 'template/' . $file;
    }
}

  return $template;

找到模板有问题。当我在插件中使用locate模板时,它与其他插件冲突。每个插件都显示与我使用的定位模板相同的插件结果。

有什么解决方案吗? 提前致谢。

1 个答案:

答案 0 :(得分:0)

我自己想出来了.. 问题出在

elseif ( is_post_type_archive( 'kbe_knowledgebase' ) || is_page(    get_option('kbe_archive_page_id' ) ) ) {

这一行。,。 我改变了一件事。

elseif ( is_post_type_archive( 'kbe_knowledgebase' ) || is_page( 'KBE_PAGE_TITLE' ) ) {

是的。