这两个代码示例中发生的情况是,add\\u filter没有调用函数来接受返回作为新标题。函数add\\u filter需要至少两个参数,第一个是包含要使用的过滤器的“标记”或名称的字符串,第二个是混合参数。在使用已定义函数的情况下,应该将函数名用作字符串,它还可以接受命名空间中回调的数组和匿名函数。
在下列情况下:
add_filter(\'wp_title\', set_page_title(\'test\'));
将首先计算最内部的函数,并将其返回结果传递给下一个外部函数。
所以
add_filter(\'wp_title\', set_page_title(other_function(function() {return "real_filter";})));
将传递字符串“real\\u filter”以添加\\u filter,假设两者之间的所有函数都将其输入参数作为返回值传递。
我相信您想要的是以下内容:
function my_title_filter($old_title, $sep, $seplocation) {
// Add some code to determine if/what you want to change your title to.
global $brand;
$title = "Designer " . $brand[\'name\'] . " $sep " . get_bloginfo(\'name\');
return $title;
}
add_filter(\'wp_title\', \'my_title_filter\', 10, 3); // 10 is the priority,
// and 3 is the number of arguments the function accepts.
// wp_title can pass 3.
另一个警告。。。在调用apply\\u filters之前,必须初始化筛选器。最佳实践是在调用add\\u filter之前定义函数。