Fix spike in update queries on the wp_options table
Since WC 3.3.1, the following query is executed on every page load: ``` UPDATE `wp_options` SET `option_value` = '1' WHERE `option_name` = 'current_theme_supports_woocommerce' ``` This is happening because of the following call to `update_option()`: ``` update_option( 'current_theme_supports_woocommerce', current_theme_supports( 'woocommerce' ) ? 1 : 0 ) ``` (02cac7d637/includes/class-wc-post-types.php (L268)
) `update_option()` shouldn't update the option when the value hasn't changed, but in this case it is updating on every request because, when the current theme supports WC, `1` (integer) is passed to `update_option()` and this function internally compares it against the old value stored in the database which is `"1"` (string). A strict comparison (`===`) is used (f3eaddd2dc/wp-includes/option.php (L343)
), so the function assumes that the value changed and proceeds with the update. This PR fixes this problem by using the values `"yes"` and `"no"` instead of `1` and `0`.
This commit is contained in:
parent
0832202063
commit
f2e7eb98df
|
@ -265,7 +265,7 @@ class WC_Post_types {
|
|||
}
|
||||
|
||||
// If theme support changes, we may need to flush permalinks since some are changed based on this flag.
|
||||
if ( update_option( 'current_theme_supports_woocommerce', current_theme_supports( 'woocommerce' ) ? 1 : 0 ) ) {
|
||||
if ( update_option( 'current_theme_supports_woocommerce', current_theme_supports( 'woocommerce' ) ? 'yes' : 'no' ) ) {
|
||||
add_option( 'woocommerce_queue_flush_rewrite_rules', 'true' );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue