web-dev-qa-db-ja.com

フォルダでget_template_part()を使用する方法はありますか?

フォルダでget_template_part()を使用する方法はありますか?私のメインフォルダにはたくさんのファイルがあります。再利用可能なすべての要素を別々のファイルに入れるためです。それからそれらをフォルダーに入れたいのですが。

それに関する情報はCodexにありません: http://codex.wordpress.org/Function_Reference/get_template_part

25
Paul

実際、テーマディレクトリに/partials/というフォルダーがあり、そのフォルダーにlatest-articles.phplatest-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を省略することを忘れないでください。

38
Ahmad M

そうではないと思います。コーデックスで知りたくない場合は、ソースへのリンクをたどり、コードを自分で見て管理してください。

見たところ、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);
}

このことから、g​​et_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 );
5
david.binda

関数get_template_part()のメモには次のように書かれています。

ノート
- 用途:locate_template()
- 用途:do_action() 'get_template_part _ {$ slug}'アクションを呼び出します。

Wichでは、 locate_template() を使用することができます。

TEMPLATEPATHの前にSTYLESHEETPATHを検索して、親テーマから継承したテーマが1つのファイルをオーバーロードできるようにします。

使用したいサブディレクトリでTEMPLATEPATHを定義した場合、get_template_part()はサブディレクトリ内のファイルを検索します。

2
Mike Madern