Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 2
CRAP
n/a
0 / 0
Automattic\Jetpack_Boost\Compatibility\Woocommerce\exclude_woocommerce_pages_from_query
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
20
Automattic\Jetpack_Boost\Compatibility\Woocommerce\get_woocommerce_page_ids
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/**
3 * Compatibility functions for WooCommerce
4 *
5 * @package automattic/jetpack-boost
6 */
7
8namespace Automattic\Jetpack_Boost\Compatibility\Woocommerce;
9
10/**
11 * Exclude special Woocommerce pages from standard "single page" Critical CSS.
12 *
13 * @param object $args the query args.
14 */
15function exclude_woocommerce_pages_from_query( $args ) {
16
17    // Only do this for page post type.
18    if ( 'page' !== $args['post_type'] ) {
19        return $args;
20    }
21
22    $woocommerce_pages = get_woocommerce_page_ids();
23    if ( empty( $woocommerce_pages ) ) {
24        return $args;
25    }
26
27    if ( ! isset( $args['post__not_in'] ) ) {
28        $args['post__not_in'] = array();
29    }
30
31    $args['post__not_in'] = array_merge( $woocommerce_pages, $args['post__not_in'] );
32
33    return $args;
34}
35
36/**
37 * Get those ol' WooCommerce page IDs
38 */
39function get_woocommerce_page_ids() {
40    if ( ! function_exists( 'wc_get_page_id' ) ) {
41        return array();
42    }
43    $page_slugs = array( 'myaccount', 'shop', 'cart', 'checkout', 'view_order', 'terms' );
44    $ids        = array_map( 'wc_get_page_id', $page_slugs );
45    $ids        = array_filter(
46        $ids,
47        function ( $value ) {
48            return $value > 0;
49        }
50    );
51
52    return $ids;
53}
54
55add_filter( 'jetpack_boost_critical_css_post_type_query', __NAMESPACE__ . '\exclude_woocommerce_pages_from_query' );