General_template.php文件中的get_xxxx函数中是否存在tirck?

时间:2017-02-19 作者:nmc

我是WordPress的新手,我需要一个很大的帮助来理解动作是如何工作的。

看来指令之间有关系do_action 在get\\u xxx函数中,它后面的代码我不理解。例如,在以下函数中:

function get_header( $name = null ) {

    do_action( \'get_header\', $name );

        $templates = array();
        $name = (string) $name;
        if ( \'\' !== $name ) {
                $templates[] = "header-{$name}.php"; // instruction 1
        }

        $templates[] = \'header.php\'; // instruction 2

        locate_template( $templates, true ); 
}
有一个do_action 在开始查找时header.php. 然后,一系列代码正在执行相同的操作,但可能会出现问题,因为变量的内容$templates “指令1”行中的始终被“指令2”行中的重写,因为它不是“if-then-else”。

在每个函数get\\u xxxx中,我们都有相同的结构。我想do_action 呼叫和随后的一系列代码,但我不明白。

如果有人能帮助我理解这个问题,我将非常感激。

1 个回复
SO网友:David Lee

这个do_action:

do_action( \'get_header\', $name );
它触发了行动get_header, 因此,所有附加操作都使用add_action 到行动\'get_header\' 将被执行,其也将通过$name 作为示例函数的参数:

function my_function($name){
    echo "The Action sent me the name:".$name."!!";
}

add_action(\'get_header\', \'my_function\');
do_action( \'get_header\', $name ); 已执行my_function 将调用$name 作为一个参数,通过这种方式,您可以在加载标题模板之前执行“操作”。

instruction 2 未覆盖instruction 1 添加默认值\'header.php\' 如果要调用自定义标头$templates 数组如下(使用get_header(\'custom\');):

Array
(
    [0] => header-custom.php
    [1] => header.php
)
locate_template 将尝试查找并加载require_once 第一个模板,如果它不存在或找不到,它将回退到header.php 试着把那个也装进去。

相关推荐