有没有办法对文件夹使用GET_TEMPLATE_PART()?

时间:2013-02-06 作者:Paul

我想知道是否有任何方法可以将get\\u template\\u part()用于文件夹?我的主文件夹现在有很多文件,因为我把每个可重用的元素都放在一个单独的文件中。我想把它们放在文件夹里。

法典中没有关于这方面的信息:http://codex.wordpress.org/Function_Reference/get_template_part

3 个回复
最合适的回答,由SO网友:Ahmad M 整理而成

事实上你可以,我的主题目录中有一个名为/partials/ 在该文件夹中,我有如下文件latest-articles.php, latest-news.phplatest-statements.php 我用get_template_part() 例如:

get_template_part(\'partials/latest\', \'news\');

get_template_part(\'partials/latest\', \'articles\');

get_template_part(\'partials/latest\', \'statements\');
只是别忘了省略.php 从文件名。

SO网友:david.binda

恐怕不行。如果你不想知道codex中的内容,那么试着按照链接到源代码,自己看看代码,并尝试管理它。

我看了一下,get\\u template\\u 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\\u template\\u part函数只是创建一个预期的php文件名,并调用函数locate\\u template。这没有什么用处,所以我也看了一下locate\\u 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 locate template搜索从Get\\u template\\u部分调用的php文件。但你可以call locate_template directly 来自您的代码。这很有用。

请尝试此代码,而不是使用get\\u template\\u part(\'loop-sigle.php\')函数(您的文件位于主题内的mydir中):

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

SO网友:Mike Madern

函数注释get_template_part() 表示:

Notes
-使用:locate\\u template()
-使用:do\\u action()调用“get\\u template\\u part{$slug}”操作。

Wich允许您使用locate_template(), 威奇说:

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

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

结束