Options: Add new `alloptions` and `pre_cache_alloptions` filters.
`pre_cache_alloptions` is run before the alloptions array is inserted into the cache, and is valuable for sanity checking the options, particularly if your caching scheme has size limitations. `alloptions` is run before returning the alloptions array, and is useful for when you have extra information that alloptions should return. Props sebastian.pisula, keesiemeijer. Fixes #33958. Built from https://develop.svn.wordpress.org/trunk@41627 git-svn-id: http://core.svn.wordpress.org/trunk@41462 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
8043c2d8e5
commit
88f71a8adf
|
@ -186,25 +186,45 @@ function form_option( $option ) {
|
|||
function wp_load_alloptions() {
|
||||
global $wpdb;
|
||||
|
||||
if ( ! wp_installing() || ! is_multisite() )
|
||||
if ( ! wp_installing() || ! is_multisite() ) {
|
||||
$alloptions = wp_cache_get( 'alloptions', 'options' );
|
||||
else
|
||||
} else {
|
||||
$alloptions = false;
|
||||
}
|
||||
|
||||
if ( !$alloptions ) {
|
||||
if ( ! $alloptions ) {
|
||||
$suppress = $wpdb->suppress_errors();
|
||||
if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
|
||||
if ( ! $alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) ) {
|
||||
$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
|
||||
$wpdb->suppress_errors($suppress);
|
||||
}
|
||||
$wpdb->suppress_errors( $suppress );
|
||||
|
||||
$alloptions = array();
|
||||
foreach ( (array) $alloptions_db as $o ) {
|
||||
$alloptions[$o->option_name] = $o->option_value;
|
||||
}
|
||||
if ( ! wp_installing() || ! is_multisite() )
|
||||
|
||||
if ( ! wp_installing() || ! is_multisite() ) {
|
||||
/**
|
||||
* Filters all options before caching them.
|
||||
*
|
||||
* @since 4.9.0
|
||||
*
|
||||
* @param array $alloptions Array with all options.
|
||||
*/
|
||||
$alloptions = apply_filters( 'pre_cache_alloptions', $alloptions );
|
||||
wp_cache_add( 'alloptions', $alloptions, 'options' );
|
||||
}
|
||||
}
|
||||
|
||||
return $alloptions;
|
||||
/**
|
||||
* Filters all options after retrieving them.
|
||||
*
|
||||
* @since 4.9.0
|
||||
*
|
||||
* @param array $alloptions Array with all options.
|
||||
*/
|
||||
return apply_filters( 'alloptions', $alloptions );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '4.9-alpha-41626';
|
||||
$wp_version = '4.9-alpha-41627';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue