Transient names. Closes #818.

This commit is contained in:
Mike Jolley 2012-03-16 16:39:16 +00:00
parent 34241a384b
commit fe800d6685
9 changed files with 43 additions and 33 deletions

View File

@ -644,7 +644,7 @@ function woocommerce_process_product_meta( $post_id, $post ) {
update_post_meta( $post_id, '_virtual', $is_virtual );
// Set transient for product type
set_transient( 'woocommerce_product_type_' . $post_id, $product_type );
set_transient( 'wc_product_type_' . $post_id, $product_type );
// Sales and prices
if ($product_type=='simple' || $product_type=='external') :

View File

@ -99,7 +99,7 @@ class WC_Product {
foreach ($load_data as $key => $default) $this->$key = (isset($this->product_custom_fields['_' . $key][0]) && $this->product_custom_fields['_' . $key][0]!=='') ? $this->product_custom_fields['_' . $key][0] : $default;
// Get product type
$transient_name = 'woocommerce_product_type_' . $this->id;
$transient_name = 'wc_product_type_' . $this->id;
if ( false === ( $this->product_type = get_transient( $transient_name ) ) ) :
$terms = wp_get_object_terms( $id, 'product_type', array('fields' => 'names') );
@ -129,7 +129,7 @@ class WC_Product {
if (is_null($this->total_stock)) :
$transient_name = 'woocommerce_product_total_stock_' . $this->id;
$transient_name = 'wc_product_total_stock_' . $this->id;
if ( false === ( $this->total_stock = get_transient( $transient_name ) ) ) :
@ -167,7 +167,7 @@ class WC_Product {
$child_post_type = ($this->is_type('variable')) ? 'product_variation' : 'product';
$transient_name = 'woocommerce_product_children_ids_' . $this->id;
$transient_name = 'wc_product_children_ids_' . $this->id;
if ( false === ( $this->children = get_transient( $transient_name ) ) ) :
@ -665,7 +665,7 @@ class WC_Product {
if ($location) $location = '_'.$location;
$star_size = apply_filters('woocommerce_star_rating_size'.$location, 16);
if ( false === ( $average_rating = get_transient( $this->id . '_woocommerce_average_rating' ) ) ) :
if ( false === ( $average_rating = get_transient( 'wc_average_rating_' . $this->id ) ) ) :
global $wpdb;
@ -692,7 +692,7 @@ class WC_Product {
$average_rating = '';
endif;
set_transient( $this->id . '_woocommerce_average_rating', $average_rating );
set_transient( 'wc_average_rating_' . $this->id, $average_rating );
endif;
@ -1148,7 +1148,7 @@ class WC_Product {
update_post_meta( $this->id, '_min_variation_sale_price', $this->min_variation_sale_price );
update_post_meta( $this->id, '_max_variation_sale_price', $this->max_variation_sale_price );
$woocommerce->clear_product_transients( $this->id );
if ( $this->min_variation_price !== '' ) $woocommerce->clear_product_transients( $this->id );
}
}

View File

@ -99,8 +99,8 @@ class WC_Query {
unset($current_wp_query['paged']);
// Generate a transient name based on current query
$transient_name = 'woocommerce_unfiltered_product_ids_' . sanitize_key( http_build_query($current_wp_query) );
$transient_name = (is_search()) ? $transient_name . '_search' : $transient_name;
$transient_name = 'wc_uf_pid_' . md5( http_build_query($current_wp_query) );
$transient_name = (is_search()) ? $transient_name . '_s' : $transient_name;
if ( false === ( $unfiltered_product_ids = get_transient( $transient_name ) ) ) {
@ -209,7 +209,7 @@ class WC_Query {
*/
function get_hidden_product_ids() {
$transient_name = (is_search()) ? 'woocommerce_hidden_from_search_product_ids' : 'woocommerce_hidden_product_ids';
$transient_name = (is_search()) ? 'wc_hidden_product_ids_search' : 'wc_hidden_product_ids';
if ( false === ( $hidden_product_ids = get_transient( $transient_name ) ) ) {

View File

@ -149,6 +149,7 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woothemes/wooc
* Fix - Removed admin bar css and spacing when disabled
* Fix - Placeholder support for non-supporting browsers
* Tweak - e-commerce tracking - SKU and Category (thanks jdiderik)
* Tweak - renamed transients (some generated transients were too long)
* Localization - Made the monthly sales dashboard widget translatable (by GeertDD)
* Localization - Updated Danish Translation (by FrederikRS)

View File

@ -230,12 +230,12 @@ class WooCommerce_Widget_Layered_Nav extends WP_Widget {
foreach ($terms as $term) {
// Get count based on current view - uses transients
$transient_name = 'woocommerce_layered_nav_count_' . sanitize_key($taxonomy) . sanitize_key( $term->term_id );
$transient_name = 'wc_ln_count_' . md5( sanitize_key($taxonomy) . sanitize_key( $term->term_id ) );
if ( false === ( $_products_in_term = get_transient( $transient_name ) ) ) {
$_products_in_term = get_objects_in_term( $term->term_id, $taxonomy );
set_transient( $transient_name, $_products_in_term );
}

View File

@ -60,7 +60,7 @@ class WooCommerce_Widget_On_Sale extends WP_Widget {
$number = 15;
// Get products on sale
if ( false === ( $product_ids_on_sale = get_transient( 'woocommerce_products_onsale' ) ) ) :
if ( false === ( $product_ids_on_sale = get_transient( 'wc_products_onsale' ) ) ) :
$meta_query = array();
$meta_query[] = array(
@ -80,7 +80,7 @@ class WooCommerce_Widget_On_Sale extends WP_Widget {
$product_ids_on_sale = array_unique(array_merge(array_values($on_sale), array_keys($on_sale)));
set_transient( 'woocommerce_products_onsale', $product_ids_on_sale );
set_transient( 'wc_products_onsale', $product_ids_on_sale );
endif;

View File

@ -39,7 +39,7 @@ class WooCommerce_Widget_Product_Categories extends WP_Widget {
$title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Product Categories', 'woocommerce' ) : $instance['title'], $instance, $this->id_base);
$c = $instance['count'] ? '1' : '0';
$h = $instance['hierarchical'] ? '1' : '0';
$h = $instance['hierarchical'] ? true : false;
$s = (isset($instance['show_children_only']) && $instance['show_children_only']) ? '1' : '0';
$d = $instance['dropdown'] ? '1' : '0';
$o = isset($instance['orderby']) ? $instance['orderby'] : 'order';
@ -83,7 +83,7 @@ class WooCommerce_Widget_Product_Categories extends WP_Widget {
global $wp_query, $post;
$cat_args['title_li'] = '';
$cat_args['hierarchical'] = 1;
$cat_args['hierarchical'] = true;
$cat_args['child_of'] = 0;
$cat_args['pad_counts'] = 1;
@ -117,7 +117,7 @@ class WooCommerce_Widget_Product_Categories extends WP_Widget {
echo '<li class="cat-item cat-item-'.$cat->term_id;
if ($this->current_cat->term_id == $cat->term_id || is_tax('product_cat', $cat->slug)) echo ' current-cat';
if ( ($this->current_cat && $this->current_cat->term_id == $cat->term_id) || is_tax('product_cat', $cat->slug) ) echo ' current-cat';
if (
$this->current_cat
&& in_array( $cat->term_id, $this->cat_ancestors )
@ -146,7 +146,8 @@ class WooCommerce_Widget_Product_Categories extends WP_Widget {
echo '<ul>';
$cat_args['title_li'] = '';
wp_list_categories(apply_filters('woocommerce_product_categories_widget_args', $cat_args));
wp_list_categories( apply_filters('woocommerce_product_categories_widget_args', $cat_args) );
echo '</ul>';
}
@ -158,7 +159,7 @@ class WooCommerce_Widget_Product_Categories extends WP_Widget {
$cat_args = array();
$cat_args['title_li'] = '';
$cat_args['hierarchical'] = 1;
$cat_args['hierarchical'] = true;
$cat_args['child_of'] = 0;
$cat_args['pad_counts'] = 1;
$cat_args['parent'] = $parent;
@ -204,7 +205,7 @@ class WooCommerce_Widget_Product_Categories extends WP_Widget {
$instance['title'] = strip_tags($new_instance['title']);
$instance['orderby'] = strip_tags($new_instance['orderby']);
$instance['count'] = !empty($new_instance['count']) ? 1 : 0;
$instance['hierarchical'] = !empty($new_instance['hierarchical']) ? 1 : 0;
$instance['hierarchical'] = !empty($new_instance['hierarchical']) ? true : false;
$instance['dropdown'] = !empty($new_instance['dropdown']) ? 1 : 0;
$instance['show_children_only'] = !empty($new_instance['show_children_only']) ? 1 : 0;

View File

@ -1245,7 +1245,7 @@ function woocommerce_add_comment_rating($comment_id) {
global $post;
if (!$_POST['rating'] || $_POST['rating'] > 5 || $_POST['rating'] < 0) $_POST['rating'] = 5;
add_comment_meta( $comment_id, 'rating', esc_attr($_POST['rating']), true );
delete_transient( esc_attr($post->ID) . '_woocommerce_average_rating' );
delete_transient( 'wc_average_rating_' . esc_attr($post->ID) );
endif;
}

View File

@ -1322,23 +1322,31 @@ class Woocommerce {
function clear_product_transients( $post_id = 0 ) {
global $wpdb;
delete_transient('woocommerce_products_onsale');
delete_transient('woocommerce_hidden_product_ids');
delete_transient('woocommerce_hidden_from_search_product_ids');
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` IN ('woocommerce_products_onsale', 'woocommerce_hidden_product_ids', 'woocommerce_hidden_from_search_product_ids')");
var_dump("CLEAR");
delete_transient('wc_products_onsale');
delete_transient('wc_hidden_product_ids');
delete_transient('wc_hidden_product_ids_search');
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` IN ('wc_products_onsale', 'wc_hidden_product_ids', 'wc_hidden_product_ids_search')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_woocommerce_unfiltered_product_ids_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_woocommerce_layered_nav_count_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_uf_pid_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_ln_count_%')");
if ($post_id>0) :
$post_id = (int) $post_id;
delete_transient('woocommerce_product_total_stock_'.$post_id);
delete_transient('woocommerce_product_children_ids_'.$post_id);
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_woocommerce_product_children_ids_$post_id%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_woocommerce_product_total_stock_$post_id%')");
delete_transient('wc_product_total_stock_'.$post_id);
delete_transient('wc_product_children_ids_'.$post_id);
delete_transient('wc_average_rating_'.$post_id);
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` IN
(
'_transient_wc_product_children_ids_$post_id',
'_transient_wc_product_total_stock_$post_id',
'_transient_wc_average_rating_$post_id'
)");
else :
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_woocommerce_product_children_ids_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_woocommerce_product_total_stock_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_product_children_ids_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_product_total_stock_%')");
$wpdb->query("DELETE FROM `$wpdb->options` WHERE `option_name` LIKE ('_transient_wc_average_rating_%')");
endif;
}