pre_cache_alloptions
云策文档标注
概述
pre_cache_alloptions 是一个 WordPress 过滤器钩子,用于在缓存所有选项之前进行过滤操作。它允许开发者修改或优化即将被缓存的选项数组。
关键要点
- pre_cache_alloptions 钩子在 wp_load_alloptions() 函数中调用,用于加载和缓存所有自动加载的选项。
- 该钩子接收一个包含所有选项的数组作为参数,开发者可以修改此数组以过滤或调整选项内容。
- 钩子在 WordPress 4.9.0 版本中引入,主要用于性能优化场景,如移除过大的选项以减少缓存大小。
- 注意:此钩子在主题和插件加载之前触发,因此不能在主题或插件中直接使用,需通过其他方式(如 mu-plugins)集成。
代码示例
add_action( 'pre_cache_alloptions', function( $alloptions ) {
foreach ( $alloptions as $key => $value ) {
$size = strlen( maybe_serialize( $value ) );
if ( $size > 1000000 ) {
unset( $alloptions[$key] );
}
}
return $alloptions;
} );注意事项
此钩子在主题和插件加载之前执行,因此无法在常规主题或插件代码中使用,需考虑通过 mu-plugins 或其他早期加载机制实现。
原文内容
Filters all options before caching them.
Parameters
$alloptionsarray-
Array with all options.
Source
$alloptions = apply_filters( 'pre_cache_alloptions', $alloptions );
Changelog
| Version | Description |
|---|---|
| 4.9.0 | Introduced. |
Skip to note 3 content
Nawawi Jamili
Optimize alloptions: remove option if size more than 1MB.
add_action( 'pre_cache_alloptions', function( $alloptions ) { foreach ( $alloptions as $key => $value ) { $size = strlen( maybe_serialize( $value ) ); if ( $size > 1000000 ) { unset( $alloptions[$key] ); } } return $alloptions; } );Skip to note 4 content
Chengmin
We can not use this hook in themes and plugins as it is fired before themes and plugins are loaded.