它们都是空的。您尚未设置任何这些变量。这是您的函数。
function ss_breadcrumb_output() {
return apply_filters( \'ss_breadcrumb_output\', \'<\' . $wrapper . $id . $class . \' xmlns:v="http://rdf.data-vocabulary.org/#">\' . $output . \'</\' . $wrapper . \'>\' );
}
该函数中的所有变量都与该函数隔离。在该函数外部设置的变量不起作用。由于您没有设置任何变量(在函数中),并且没有将它们传递到函数中,因此
empty
.
It is a matter of scope. 这是有办法的,
like globalization, 但这对这个问题并不重要,所以我让你自己决定。
但对于你的问题。。。看看过滤器where it is applied in the plugin.
return apply_filters( \'wpseo_breadcrumb_output\', \'<\' . $wrapper . $id . $class . \' xmlns:v="http://rdf.data-vocabulary.org/#">\' . $output . \'</\' . $wrapper . \'>\' );
我认为这可能是你的错误所在。这个--
\'<\' . $wrapper . $id . $class . \' xmlns:v="http://rdf.data-vocabulary.org/#">\' . $output . \'</\' . $wrapper . \'>\'
-- 都是一个参数。那个
.
是字符串串联运算符,表示所有这些都合并到一个字符串中。当它被传递到过滤器时,就不再有变量了。它们作为简单字符串传递给过滤器。
如果添加如下参数,则函数可以捕获并操作该字符串:
function ss_breadcrumb_output($output) {
var_dump($output); // you should see the string referred to above
return apply_filters( \'ss_breadcrumb_output\', \'<\' . $wrapper . $id . $class . \' xmlns:v="http://rdf.data-vocabulary.org/#">\' . $output . \'</\' . $wrapper . \'>\' );
}
我对这一部分感到困惑:
return apply_filters( \'ss_breadcrumb_output\', \'<\' . $wrapper . $id . $class . \' xmlns:v="http://rdf.data-vocabulary.org/#">\' . $output . \'</\' . $wrapper . \'>\' );
如果您试图将面包屑输出传递给另一个过滤器(我想是您创建的过滤器),您可能需要:
function ss_breadcrumb_output($output) {
return apply_filters( \'ss_breadcrumb_output\', $output );
}
但为什么呢?任何你能做的事
wpseo_breadcrumb_output
滤器
我想你只是想:
function ss_breadcrumb_output($output) {
$output = preg_replace(\'/([^>]+)>(.*)/\',\'$1 aria-labelledby="breadcrumblabel" >$2\',$output);
return $output;
}
我也不应该认为标记上的正则表达式是相当危险的。很容易出错。小心使用。