isWooCommerceActive() ) { return false; } static $cartPageId; if ( ! $cartPageId ) { $cartPageId = (int) get_option( 'woocommerce_cart_page_id' ); } static $checkoutPageId; if ( ! $checkoutPageId ) { $checkoutPageId = (int) get_option( 'woocommerce_checkout_page_id' ); } static $myAccountPageId; if ( ! $myAccountPageId ) { $myAccountPageId = (int) get_option( 'woocommerce_myaccount_page_id' ); } static $termsPageId; if ( ! $termsPageId ) { $termsPageId = (int) get_option( 'woocommerce_terms_page_id' ); } if ( $cartPageId === (int) $postId || $checkoutPageId === (int) $postId || $myAccountPageId === (int) $postId || $termsPageId === (int) $postId ) { return true; } return false; } /** * Checks whether the queried object is the WooCommerce shop page. * * @since 4.0.0 * * @param int $id The post ID to check against (optional). * @return bool Whether the current page is the WooCommerce shop page. */ public function isWooCommerceShopPage( $id = 0 ) { if ( ! $this->isWooCommerceActive() ) { return false; } if ( ! is_admin() && ! aioseo()->helpers->isAjaxCronRest() && function_exists( 'is_shop' ) ) { return is_shop(); } $id = ! $id && ! empty( $_GET['post'] ) ? (int) wp_unslash( $_GET['post'] ) : (int) $id; // phpcs:ignore HM.Security.ValidatedSanitizedInput return $id && wc_get_page_id( 'shop' ) === $id; } /** * Checks whether the queried object is the WooCommerce cart page. * * @since 4.1.3 * * @param int $id The post ID to check against (optional). * @return bool Whether the current page is the WooCommerce cart page. */ public function isWooCommerceCartPage( $id = 0 ) { if ( ! $this->isWooCommerceActive() ) { return false; } if ( ! is_admin() && ! aioseo()->helpers->isAjaxCronRest() && function_exists( 'is_cart' ) ) { return is_cart(); } $id = ! $id && ! empty( $_GET['post'] ) ? (int) wp_unslash( $_GET['post'] ) : (int) $id; // phpcs:ignore HM.Security.ValidatedSanitizedInput return $id && wc_get_page_id( 'cart' ) === $id; } /** * Checks whether the queried object is the WooCommerce checkout page. * * @since 4.1.3 * * @param int $id The post ID to check against (optional). * @return bool Whether the current page is the WooCommerce checkout page. */ public function isWooCommerceCheckoutPage( $id = 0 ) { if ( ! $this->isWooCommerceActive() ) { return false; } if ( ! is_admin() && ! aioseo()->helpers->isAjaxCronRest() && function_exists( 'is_checkout' ) ) { return is_checkout(); } $id = ! $id && ! empty( $_GET['post'] ) ? (int) wp_unslash( $_GET['post'] ) : (int) $id; // phpcs:ignore HM.Security.ValidatedSanitizedInput return $id && wc_get_page_id( 'checkout' ) === $id; } /** * Checks whether the queried object is the WooCommerce account page. * * @since 4.1.3 * * @param int $id The post ID to check against (optional). * @return bool Whether the current page is the WooCommerce account page. */ public function isWooCommerceAccountPage( $id = 0 ) { if ( ! $this->isWooCommerceActive() ) { return false; } if ( ! is_admin() && ! aioseo()->helpers->isAjaxCronRest() && function_exists( 'is_account_page' ) ) { return is_account_page(); } $id = ! $id && ! empty( $_GET['post'] ) ? (int) wp_unslash( $_GET['post'] ) : (int) $id; // phpcs:ignore HM.Security.ValidatedSanitizedInput return $id && wc_get_page_id( 'myaccount' ) === $id; } /** * Internationalize. * * @since 4.0.0 * * @param $in * @return mixed|void */ public function internationalize( $in ) { if ( function_exists( 'langswitch_filter_langs_with_message' ) ) { $in = langswitch_filter_langs_with_message( $in ); } if ( function_exists( 'polyglot_filter' ) ) { $in = polyglot_filter( $in ); } if ( function_exists( 'qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) { $in = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); } elseif ( function_exists( 'ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) { $in = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); } elseif ( function_exists( 'qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage' ) ) { $in = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage( $in ); } return apply_filters( 'localization', $in ); } /** * Checks if WPML is active. * * @since 4.0.0 * * @return bool True if it is, false if not. */ public function isWpmlActive() { return class_exists( 'SitePress' ); } /** * Localizes a given URL. * * This is required for compatibility with WPML. * * @since 4.0.0 * * @param string $path The relative path of the URL. * @return string $url The filtered URL. */ public function localizedUrl( $path ) { $url = apply_filters( 'wpml_home_url', home_url( '/' ) ); // Remove URL parameters. preg_match_all( '/\?[\s\S]+/', $url, $matches ); // Get the base URL. $url = preg_replace( '/\?[\s\S]+/', '', $url ); $url = trailingslashit( $url ); $url .= preg_replace( '/\//', '', $path, 1 ); // Readd URL parameters. if ( $matches && $matches[0] ) { $url .= $matches[0][0]; } return $url; } /** * Checks whether BuddyPress is active. * * @since 4.0.0 * * @return boolean */ public function isBuddyPressActive() { return class_exists( 'BuddyPress' ); } /** * Checks whether the queried object is a buddy press user page. * * @since 4.0.0 * * @return boolean */ public function isBuddyPressUser() { return $this->isBuddyPressActive() && function_exists( 'bp_is_user' ) && bp_is_user(); } /** * Returns if the page is a BuddyPress page (Activity, Members, Groups). * * @since 4.0.0 * * @param int $postId The post ID. * @return boolean If the page is a BuddyPress page or not. */ public function isBuddyPressPage( $postId = false ) { $bpPages = get_option( 'bp-pages' ); if ( empty( $bpPages ) ) { return false; } foreach ( $bpPages as $page ) { if ( (int) $page === (int) $postId ) { return true; } } return false; } /** * Returns ACF fields as an array of meta keys and values. * * @since 4.0.6 * * @param WP_Post|int $post The post. * @param array $allowedTypes A whitelist of ACF field types. * @return array An array of meta keys and values. */ public function getAcfContent( $post = null, $types = [] ) { $post = ( $post && is_object( $post ) ) ? $post : $this->getPost( $post ); if ( ! class_exists( 'ACF' ) || ! function_exists( 'get_field_objects' ) ) { return []; } if ( defined( 'ACF_VERSION' ) && version_compare( ACF_VERSION, '5.7.0', '<' ) ) { return []; } // Set defaults. $allowedTypes = [ 'text', 'textarea', 'email', 'url', 'wysiwyg', 'image', 'gallery', // 'link', // 'taxonomy', ]; $types = wp_parse_args( $types, $allowedTypes ); $acfFields = []; $fieldObjects = get_field_objects( $post->ID ); if ( ! empty( $fieldObjects ) ) { foreach ( $fieldObjects as $field ) { if ( empty( $field['value'] ) ) { continue; } if ( ! in_array( $field['type'], $types, true ) ) { continue; } if ( 'url' === $field['type'] ) { // Url field $value = "{$field['value']}"; } elseif ( 'image' === $field['type'] ) { // Image field $value = ""; } elseif ( 'gallery' === $field['type'] ) { // Image field $value = ""; } else { // Other fields $value = $field['value']; } if ( $value ) { $acfFields[ $field['name'] ] = $value; } } } return $acfFields; } }