我想知道是否可以将get_template_part()与文件夹一起使用?我的主文件夹现在有很多文件,因为我将每个可重复使用的元素都放在了单独的文件中。我想将它们放在文件夹中。

Codex中没有关于此的信息:http://codex.wordpress.org/Function_Reference/get_template_part

#1 楼

实际上,您可以,在我的主题目录中有一个名为/partials/的文件夹,在该文件夹中,我有latest-articles.phplatest-news.phplatest-statements.php之类的文件,并使用get_template_part()加载了这些文件,例如: >
别忘了从文件名中忽略.php

评论


谢谢!太简单了,真可惜我没发现。我坚信这是不可能的,因为Codex没有提及。这个问题带来了更多有趣的答案,但这是最简单的问题,因此它可能对普通人来说是最有用的:)(因此,请用绿色对勾标记)。

– Paul
13年2月6日在13:30

幸运的是,可以编辑Codex,以便下一个人不会遇到相同的问题。 :-)

–道尔顿·鲁尼
13年2月13日在17:34

@Sebastien您实际上可以执行以下操作:<?php get_template_part('partials / file'); ?>

– HauntedSmores
19年5月15日23:00

#2 楼

恐怕不是。如果您不想了解Codex中的内容,请尝试访问源代码的链接,并亲自查看代码并尝试对其进行管理。

我看过了, get_template_part函数的定义如下:

function get_template_part( $slug, $name = null ) {
    do_action( "get_template_part_{$slug}", $slug, $name );

    $templates = array();
    if ( isset($name) )
        $templates[] = "{$slug}-{$name}.php";

    $templates[] = "{$slug}.php";

    locate_template($templates, true, false);
}


从中,您可以读出,get_template_part函数只是创建一个预期的php文件名并调用函数locate_template。这没有用,所以我也看看了locate_template函数:

function locate_template($template_names, $load = false, $require_once = true ) {
    $located = '';
    foreach ( (array) $template_names as $template_name ) {
        if ( !$template_name )
            continue;
        if ( file_exists(STYLESHEETPATH . '/' . $template_name)) {
            $located = STYLESHEETPATH . '/' . $template_name;
            break;
        } else if ( file_exists(TEMPLATEPATH . '/' . $template_name) ) {
            $located = TEMPLATEPATH . '/' . $template_name;
            break;
        }
    }

    if ( $load && '' != $located )
        load_template( $located, $require_once );

    return $located;
}


获取定位模板搜索从get_template_part调用的php文件。但是您可以直接从代码中调用locate_template。这很有用。

尝试使用以下代码代替get_template_part('loop-sigle.php')函数(您的文件位于主题内的mydir中):

locate_template( 'mydir/loop-single.php', true, true );


评论


有趣的快捷方式,我想知道它是否对加载顺序或文件内容有负面影响。

–lowtechsun
17年9月30日在0:42

get_template_part将$ require_once设置为false是有原因的-OP希望使用该函数来调用可重复使用的部件...

–艾萨克·卢博(Isaac Lubow)
20年6月2日在7:06

#3 楼

函数get_template_part()的注释说:


注释
-用法:locate_template()
-用法:do_action()调用'get_template_part _ {$ slug}'操作。


Wich允许您使用locate_template(),这样说:


在TEMPLATEPATH之前的STYLESHEETPATH中进行搜索,以便从父级继承的主题主题可以只重载一个文件。


如果使用要使用的子目录定义TEMPLATEPATH,则get_template_part()将在子目录中搜索文件。