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;
}
}