钩子文档

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.

User Contributed Notes

  1. Skip to note 3 content

    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;
    } );