连接字符串时运行输出在PHP中不起作用。如果您尝试以下操作:
function goes() {
echo \'goes\';
}
$string = \'My string \' . goes() . \'here\';
echo $string;
那么输出将是:
goesMy字符串在这里
同样的事情也适用于include
或require
当包含的文件生成输出时。
如果要将PHP文件的输出连接到字符串中,则需要include
它使用输出缓冲捕获输出。如果文件位于主题中,则应将其包含在get_template_part()
, 而不是locate_template()
.
add_filter(\'wp_nav_menu_items\', \'add_css_switcher\', 10, 2);
function add_css_switcher($items, $args){
ob_start();
get_template_part( \'inc/css-switcher\' );
$css_switcher = ob_get_clean();
$items .= \'<li class="css-toggler hidden">\' . $css_switcher . \'</li>\';
return $items;
}
但这确实是一种愚蠢的做法。如果要返回一个要连接到字符串中的值,那么模板文件并不是一种明智的方法。您应该将
css-switcher.php
并将其更改为返回其输出,而不是回显它。然后可以在代码中使用该函数:
function css_switcher() {
// Return menu item code here.
}
add_filter(\'wp_nav_menu_items\', \'add_css_switcher\', 10, 2);
function add_css_switcher($items, $args){
$items .= \'<li class="css-toggler hidden">\' . css_switcher() . \'</li>\';
return $items;
}