Merge pull request #19934 from woocommerce/fix/19819
Add protocol to URLs for thumbnails in cart.
This commit is contained in:
commit
7a6b0d8cf5
|
@ -1809,7 +1809,7 @@ class WC_Product extends WC_Abstract_Legacy_Product {
|
||||||
$image = '';
|
$image = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return apply_filters( 'woocommerce_product_get_image', wc_get_relative_url( $image ), $this, $size, $attr, $placeholder, $image );
|
return apply_filters( 'woocommerce_product_get_image', $image, $this, $size, $attr, $placeholder, $image );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -78,14 +78,14 @@ abstract class WC_Widget extends WP_Widget {
|
||||||
* @return bool true if the widget is cached otherwise false
|
* @return bool true if the widget is cached otherwise false
|
||||||
*/
|
*/
|
||||||
public function get_cached_widget( $args ) {
|
public function get_cached_widget( $args ) {
|
||||||
$cache = wp_cache_get( apply_filters( 'woocommerce_cached_widget_id', $this->widget_id ), 'widget' );
|
$cache = wp_cache_get( $this->get_widget_id_for_cache( $this->widget_id ), 'widget' );
|
||||||
|
|
||||||
if ( ! is_array( $cache ) ) {
|
if ( ! is_array( $cache ) ) {
|
||||||
$cache = array();
|
$cache = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset( $cache[ $args['widget_id'] ] ) ) {
|
if ( isset( $cache[ $this->get_widget_id_for_cache( $args['widget_id'] ) ] ) ) {
|
||||||
echo $cache[ $args['widget_id'] ]; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
echo $cache[ $this->get_widget_id_for_cache( $args['widget_id'] ) ]; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,15 +100,15 @@ abstract class WC_Widget extends WP_Widget {
|
||||||
* @return string the content that was cached
|
* @return string the content that was cached
|
||||||
*/
|
*/
|
||||||
public function cache_widget( $args, $content ) {
|
public function cache_widget( $args, $content ) {
|
||||||
$cache = wp_cache_get( apply_filters( 'woocommerce_cached_widget_id', $this->widget_id ), 'widget' );
|
$cache = wp_cache_get( $this->get_widget_id_for_cache( $this->widget_id ), 'widget' );
|
||||||
|
|
||||||
if ( ! is_array( $cache ) ) {
|
if ( ! is_array( $cache ) ) {
|
||||||
$cache = array();
|
$cache = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$cache[ $args['widget_id'] ] = $content;
|
$cache[ $this->get_widget_id_for_cache( $args['widget_id'] ) ] = $content;
|
||||||
|
|
||||||
wp_cache_set( apply_filters( 'woocommerce_cached_widget_id', $this->widget_id ), $cache, 'widget' );
|
wp_cache_set( $this->get_widget_id_for_cache( $this->widget_id ), $cache, 'widget' );
|
||||||
|
|
||||||
return $content;
|
return $content;
|
||||||
}
|
}
|
||||||
|
@ -117,7 +117,9 @@ abstract class WC_Widget extends WP_Widget {
|
||||||
* Flush the cache.
|
* Flush the cache.
|
||||||
*/
|
*/
|
||||||
public function flush_widget_cache() {
|
public function flush_widget_cache() {
|
||||||
wp_cache_delete( apply_filters( 'woocommerce_cached_widget_id', $this->widget_id ), 'widget' );
|
foreach ( array( 'https', 'http' ) as $scheme ) {
|
||||||
|
wp_cache_delete( $this->get_widget_id_for_cache( $this->widget_id, $scheme ), 'widget' );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -347,4 +349,22 @@ abstract class WC_Widget extends WP_Widget {
|
||||||
|
|
||||||
return $link;
|
return $link;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get widget id plus scheme/protocol to prevent serving mixed content from (persistently) cached widgets.
|
||||||
|
*
|
||||||
|
* @since 3.4.0
|
||||||
|
* @param string $widget_id Id of the cached widget.
|
||||||
|
* @param string $scheme Scheme for the widget id.
|
||||||
|
* @return string Widget id including scheme/protocol.
|
||||||
|
*/
|
||||||
|
protected function get_widget_id_for_cache( $widget_id, $scheme = '' ) {
|
||||||
|
if ( $scheme ) {
|
||||||
|
$widget_id_for_cache = $widget_id . '-' . $scheme;
|
||||||
|
} else {
|
||||||
|
$widget_id_for_cache = $widget_id . '-' . ( is_ssl() ? 'https' : 'http' );
|
||||||
|
}
|
||||||
|
|
||||||
|
return apply_filters( 'woocommerce_cached_widget_id', $widget_id_for_cache );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,10 +51,10 @@ do_action( 'woocommerce_before_mini_cart' ); ?>
|
||||||
), $cart_item_key );
|
), $cart_item_key );
|
||||||
?>
|
?>
|
||||||
<?php if ( empty( $product_permalink ) ) : ?>
|
<?php if ( empty( $product_permalink ) ) : ?>
|
||||||
<?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . ' '; ?>
|
<?php echo $thumbnail . $product_name . ' '; ?>
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<a href="<?php echo esc_url( $product_permalink ); ?>">
|
<a href="<?php echo esc_url( $product_permalink ); ?>">
|
||||||
<?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . ' '; ?>
|
<?php echo $thumbnail . $product_name . ' '; ?>
|
||||||
</a>
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php echo wc_get_formatted_cart_item_data( $cart_item ); ?>
|
<?php echo wc_get_formatted_cart_item_data( $cart_item ); ?>
|
||||||
|
|
Loading…
Reference in New Issue