| @@ -4,8 +4,12 @@ | ||
| 4 | 4 | * |
| 5 | 5 | * @package automattic/jetpack |
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | +if ( ! defined( 'ABSPATH' ) ) { | |
| 9 | + exit( 0 ); | |
| 10 | +} | |
| 11 | + | |
| 8 | 12 | add_action( 'woocommerce_init', 'jetpack_woocommerce_integration' ); |
| 9 | 13 | |
| 10 | 14 | /** |
| 11 | 15 | * Loads JP+WC integration. |
| @@ -22,8 +26,14 @@ | ||
| 22 | 26 | |
| 23 | 27 | add_action( 'woocommerce_share', 'jetpack_woocommerce_social_share_icons', 10 ); |
| 24 | 28 | |
| 25 | 29 | /** |
| 30 | + * Add product post type to Jetpack sitemap while skipping hidden products. | |
| 31 | + */ | |
| 32 | + add_filter( 'jetpack_sitemap_post_types', 'jetpack_woocommerce_add_to_sitemap' ); | |
| 33 | + add_filter( 'jetpack_sitemap_skip_post', 'jetpack_woocommerce_skip_hidden_products_in_sitemap', 10, 2 ); | |
| 34 | + | |
| 35 | + /** | |
| 26 | 36 | * Wrap in function exists check since this requires WooCommerce 3.3+. |
| 27 | 37 | */ |
| 28 | 38 | if ( function_exists( 'wc_get_default_products_per_row' ) ) { |
| 29 | 39 | add_filter( 'infinite_scroll_render_callbacks', 'jetpack_woocommerce_infinite_scroll_render_callback', 10 ); |
| @@ -31,8 +41,35 @@ | ||
| 31 | 41 | } |
| 32 | 42 | } |
| 33 | 43 | |
| 34 | 44 | /** |
| 45 | + * Add product post type to sitemap if Woocommerce is present. | |
| 46 | + * | |
| 47 | + * @param array $post_types Array of post types included in sitemap. | |
| 48 | + */ | |
| 49 | +function jetpack_woocommerce_add_to_sitemap( $post_types ) { | |
| 50 | + $post_types[] = 'product'; | |
| 51 | + | |
| 52 | + return $post_types; | |
| 53 | +} | |
| 54 | + | |
| 55 | +/** | |
| 56 | + * Skip hidden products when generating the sitemap. | |
| 57 | + * | |
| 58 | + * @param bool $skip Whether to skip the post. | |
| 59 | + * @param WP_Post $post The post object. | |
| 60 | + */ | |
| 61 | +function jetpack_woocommerce_skip_hidden_products_in_sitemap( $skip, $post ) { | |
| 62 | + if ( $post !== null && $post->post_type === 'product' ) { | |
| 63 | + $product = wc_get_product( $post->ID ); | |
| 64 | + if ( $product ) { | |
| 65 | + $skip = ! $product->is_visible(); | |
| 66 | + } | |
| 67 | + } | |
| 68 | + return $skip; | |
| 69 | +} | |
| 70 | + | |
| 71 | +/** | |
| 35 | 72 | * Make sure the social sharing icons show up under the product's short description |
| 36 | 73 | */ |
| 37 | 74 | function jetpack_woocommerce_social_share_icons() { |
| 38 | 75 | if ( function_exists( 'sharing_display' ) ) { |
| @@ -55,9 +92,9 @@ | ||
| 55 | 92 | |
| 56 | 93 | if ( is_cart() || is_checkout() || is_account_page() ) { |
| 57 | 94 | remove_filter( 'the_content', 'sharing_display', 19 ); |
| 58 | 95 | if ( class_exists( 'Jetpack_Likes' ) ) { |
| 59 | - remove_filter( 'the_content', array( Jetpack_Likes::init(), 'post_likes' ), 30, 1 ); | |
| 96 | + remove_filter( 'the_content', array( Jetpack_Likes::init(), 'post_likes' ), 30 ); | |
| 60 | 97 | } |
| 61 | 98 | } |
| 62 | 99 | } |
| 63 | 100 | add_action( 'loop_start', 'jetpack_woocommerce_remove_share' ); |
| @@ -100,30 +137,4 @@ | ||
| 100 | 137 | display: none; |
| 101 | 138 | }'; |
| 102 | 139 | wp_add_inline_style( 'woocommerce-layout', $custom_css ); |
| 103 | 140 | } |
| 104 | - | |
| 105 | -/** | |
| 106 | - * Adds compat for WooCommerce and Lazy Loading. | |
| 107 | - */ | |
| 108 | -function jetpack_woocommerce_lazy_images_compat() { | |
| 109 | - wp_add_inline_script( | |
| 110 | - 'wc-cart-fragments', | |
| 111 | - " | |
| 112 | - jQuery( 'body' ).bind( 'wc_fragments_refreshed', function() { | |
| 113 | - var jetpackLazyImagesLoadEvent; | |
| 114 | - try { | |
| 115 | - jetpackLazyImagesLoadEvent = new Event( 'jetpack-lazy-images-load', { | |
| 116 | - bubbles: true, | |
| 117 | - cancelable: true | |
| 118 | - } ); | |
| 119 | - } catch ( e ) { | |
| 120 | - jetpackLazyImagesLoadEvent = document.createEvent( 'Event' ) | |
| 121 | - jetpackLazyImagesLoadEvent.initEvent( 'jetpack-lazy-images-load', true, true ); | |
| 122 | - } | |
| 123 | - jQuery( 'body' ).get( 0 ).dispatchEvent( jetpackLazyImagesLoadEvent ); | |
| 124 | - } ); | |
| 125 | - " | |
| 126 | - ); | |
| 127 | -} | |
| 128 | - | |
| 129 | -add_action( 'wp_enqueue_scripts', 'jetpack_woocommerce_lazy_images_compat', 11 ); | |