WordPress中是否有方法在屏幕加载时检查是否调用了筛选器或函数是否已运行?
我似乎想起了一些方法,但不记得具体细节。
在页面加载期间,一个过滤器被调用了3次,我想在再次运行各种db密集型代码之前检查它是否已经被调用。
我的问题不是针对the_content
, 但例如:
add_filter( \'the_content\', \'asdf_the_content\', 99, 1 );
function asdf_the_content( $content ) {
// check if the_content has already been
// filtered by some other function
$content = ucwords( $content );
return $content;
}
最合适的回答,由SO网友:phatskat 整理而成
可以使用静态变量来实现这一点:
add_filter( \'the_content\', \'asdf_the_content\', 99, 1 );
function asdf_the_content( $content ) {
static $has_run = false;
if ( $has_run ) {
return $content;
}
$has_run = true;
// check if the_content has already been
// filtered by some other function
$content = ucwords( $content );
return $content;
}
The
$has_run
变量将为
false
在第一次运行和后续运行时
true
代码将不会继续。函数中的静态变量在每次执行期间都会保持其值,而不是像普通变量一样初始化。
另一个例子:
function add_one() {
static $total = 0;
$total++;
echo $total;
}
add_one(); // 1
add_one(); // 2
add_one(); // 3