我喜欢保持我的模板简洁,因为这个原因,庞大(或长段)的代码就像你问题中的代码一样,我倾向于将其移动到一个函数中,然后在我的模板中调用该函数或使用do_action()
呼叫。
我还将我的功能划分到不同的功能文件中,这样就不会出现functions.php
它有2000行长。这也有助于了解和记住特定函数的代码所在的位置。例如,所有与分页相关的函数都放在一个文件中,所有与页脚函数相关的代码都放在一个单独的文件中,等等。
在您的代码示例中,我还将添加函数get_current_template();
编码到新函数中。整个功能get_current_template();
可以简单地重写为新模板中的一行代码,如
$template_name = str_replace( \'.php\', \'\', get_post_meta( get_queried_object_id(), \'_wp_page_template\', true ) );
我还喜欢从函数返回值,而不是回显它们。原因是,有时您只需要返回值以便以后使用,如果您的函数响应这些值,则无法执行此操作。
我会将您的代码重写为以下事项中的函数
function get_styles_for_pages()
{
/*
* Immediately stop function and return null if this is not a page
*/
if ( !is_page() )
return null;
/*
* Use get_queried_object_id() to get current page id to get template name. Very reliable.
*/
$template_name = str_replace( \'.php\', \'\', get_post_meta( get_queried_object_id(), \'_wp_page_template\', true ) );
switch ($template_name) {
case "about-us":
$templates_color = \'white\';
break;
case "homepage":
$templates_color = \'white\';
break;
case "clients_case-studies":
$templates_color = \'blue\';
break;
case "":
$templates_color = \'blue\';
break;
case "Inner-page":
$templates_color = \'blue\';
break;
case "Inner-page-nb-blue":
$templates_color = \'blue\';
break;
case "Inner-page-nb-orange":
$templates_color = \'orange\';
break;
case "Inner-page-orange":
$templates_color = \'orange\';
break;
default:
$templates_color = \'white\';
}
if ( ($templates_color == \'blue\')
|| ( $templates_color == \'yellow\' )
|| ( $templates_color == \'orange\' )
){
$the_logo = \'white-logo.png\'; //goes for the logos url
$white_text = \'style="color:white!important;"\'; // goes for the footers text
$the_hr = \'whiteb-hr\'; //goes for the hrs
} else {
$the_logo = \'yellow-logo.png\';
$white_text = \'\'; // goes for the footers text
$the_hr = \'\'; //goes for the hrs
}
/*
* Built an array to return our values
*/
$array = array(
\'the_logo\' => $the_logo,
\'white_text\' => $white_text,
\'the_hr\' => $the_hr
);
return $array;
}
你可以这样称呼它
$array = get_styles_for_pages();
echo $array[\'the_logo\'];
echo $array[\'white_text\'];
echo $array[\'the_hr\'];