2013-08-09 16:11:15 +00:00
< ? php
/**
2015-11-03 13:53:50 +00:00
* WooCommerce Conditional Functions
2013-08-09 16:11:15 +00:00
*
* Functions for determining the current query / page .
*
2015-02-10 10:57:33 +00:00
* @ package WooCommerce / Functions
2014-12-29 08:31:18 +00:00
* @ version 2.3 . 0
2013-08-09 16:11:15 +00:00
*/
2014-09-20 19:06:46 +00:00
if ( ! defined ( 'ABSPATH' ) ) {
2015-02-10 10:57:33 +00:00
exit ;
2014-09-20 19:06:46 +00:00
}
2013-08-09 16:11:15 +00:00
/**
2017-10-09 10:39:27 +00:00
* Is_woocommerce - Returns true if on a page which uses WooCommerce templates ( cart and checkout are standard pages with shortcodes and thus are not included ) .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_woocommerce () {
2018-03-21 22:57:10 +00:00
return apply_filters ( 'is_woocommerce' , is_shop () || is_product_taxonomy () || is_product () );
2013-08-09 16:11:15 +00:00
}
if ( ! function_exists ( 'is_shop' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_shop - Returns true when viewing the product type archive ( shop ) .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_shop () {
2015-11-17 06:08:06 +00:00
return ( is_post_type_archive ( 'product' ) || is_page ( wc_get_page_id ( 'shop' ) ) );
2013-08-09 16:11:15 +00:00
}
}
if ( ! function_exists ( 'is_product_taxonomy' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_product_taxonomy - Returns true when viewing a product taxonomy archive .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_product_taxonomy () {
return is_tax ( get_object_taxonomies ( 'product' ) );
}
}
if ( ! function_exists ( 'is_product_category' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_product_category - Returns true when viewing a product category .
*
2015-02-10 10:57:33 +00:00
* @ param string $term ( default : '' ) The term slug your checking for . Leave blank to return true on any .
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_product_category ( $term = '' ) {
return is_tax ( 'product_cat' , $term );
2015-06-03 10:50:11 +00:00
}
2013-08-09 16:11:15 +00:00
}
if ( ! function_exists ( 'is_product_tag' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_product_tag - Returns true when viewing a product tag .
*
2015-02-10 10:57:33 +00:00
* @ param string $term ( default : '' ) The term slug your checking for . Leave blank to return true on any .
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_product_tag ( $term = '' ) {
return is_tax ( 'product_tag' , $term );
}
}
if ( ! function_exists ( 'is_product' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_product - Returns true when viewing a single product .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_product () {
return is_singular ( array ( 'product' ) );
}
}
if ( ! function_exists ( 'is_cart' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_cart - Returns true when viewing the cart page .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_cart () {
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'cart' );
return ( $page_id && is_page ( $page_id ) ) || defined ( 'WOOCOMMERCE_CART' ) || wc_post_content_has_shortcode ( 'woocommerce_cart' );
2013-08-09 16:11:15 +00:00
}
}
if ( ! function_exists ( 'is_checkout' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_checkout - Returns true when viewing the checkout page .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_checkout () {
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'checkout' );
return ( $page_id && is_page ( $page_id ) ) || wc_post_content_has_shortcode ( 'woocommerce_checkout' ) || apply_filters ( 'woocommerce_is_checkout' , false ) || defined ( 'WOOCOMMERCE_CHECKOUT' );
2013-08-09 16:11:15 +00:00
}
}
if ( ! function_exists ( 'is_checkout_pay_page' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_checkout_pay - Returns true when viewing the checkout ' s pay page .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_checkout_pay_page () {
global $wp ;
2015-11-17 06:08:06 +00:00
return is_checkout () && ! empty ( $wp -> query_vars [ 'order-pay' ] );
2013-08-09 16:11:15 +00:00
}
}
2014-02-12 12:18:36 +00:00
if ( ! function_exists ( 'is_wc_endpoint_url' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_wc_endpoint_url - Check if an endpoint is showing .
*
2018-03-13 11:33:48 +00:00
* @ param string | false $endpoint Whether endpoint .
2014-02-12 12:18:36 +00:00
* @ return bool
*/
2014-12-05 13:42:19 +00:00
function is_wc_endpoint_url ( $endpoint = false ) {
2014-02-12 12:18:36 +00:00
global $wp ;
$wc_endpoints = WC () -> query -> get_query_vars ();
2016-09-07 22:32:24 +00:00
if ( false !== $endpoint ) {
2014-12-05 13:42:19 +00:00
if ( ! isset ( $wc_endpoints [ $endpoint ] ) ) {
return false ;
} else {
$endpoint_var = $wc_endpoints [ $endpoint ];
}
return isset ( $wp -> query_vars [ $endpoint_var ] );
2014-02-12 12:18:36 +00:00
} else {
2014-12-05 13:42:19 +00:00
foreach ( $wc_endpoints as $key => $value ) {
if ( isset ( $wp -> query_vars [ $key ] ) ) {
return true ;
}
}
2015-03-27 15:15:40 +00:00
2014-12-05 13:42:19 +00:00
return false ;
2014-02-12 12:18:36 +00:00
}
}
}
2013-08-09 16:11:15 +00:00
if ( ! function_exists ( 'is_account_page' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_account_page - Returns true when viewing an account page .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_account_page () {
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'myaccount' );
return ( $page_id && is_page ( $page_id ) ) || wc_post_content_has_shortcode ( 'woocommerce_my_account' ) || apply_filters ( 'woocommerce_is_account_page' , false );
2013-08-09 16:11:15 +00:00
}
}
2014-12-29 08:31:18 +00:00
if ( ! function_exists ( 'is_view_order_page' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_view_order_page - Returns true when on the view order page .
*
2016-09-02 02:40:36 +00:00
* @ return bool
*/
2014-12-29 08:31:18 +00:00
function is_view_order_page () {
global $wp ;
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'myaccount' );
return ( $page_id && is_page ( $page_id ) && isset ( $wp -> query_vars [ 'view-order' ] ) );
2014-12-29 08:31:18 +00:00
}
}
2016-01-22 19:30:10 +00:00
if ( ! function_exists ( 'is_edit_account_page' ) ) {
/**
2016-09-02 02:40:36 +00:00
* Check for edit account page .
* Returns true when viewing the edit account page .
*
* @ since 2.5 . 1
* @ return bool
*/
2016-01-22 19:30:10 +00:00
function is_edit_account_page () {
global $wp ;
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'myaccount' );
return ( $page_id && is_page ( $page_id ) && isset ( $wp -> query_vars [ 'edit-account' ] ) );
2016-01-22 19:30:10 +00:00
}
}
2013-08-09 16:11:15 +00:00
if ( ! function_exists ( 'is_order_received_page' ) ) {
2014-02-07 17:57:17 +00:00
/**
2017-10-09 10:39:27 +00:00
* Is_order_received_page - Returns true when viewing the order received page .
*
2016-09-02 02:40:36 +00:00
* @ return bool
*/
2014-02-07 17:57:17 +00:00
function is_order_received_page () {
global $wp ;
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'checkout' );
return apply_filters ( 'woocommerce_is_order_received_page' , ( $page_id && is_page ( $page_id ) && isset ( $wp -> query_vars [ 'order-received' ] ) ) );
2014-02-07 17:57:17 +00:00
}
2013-08-09 16:11:15 +00:00
}
2013-11-01 17:08:22 +00:00
if ( ! function_exists ( 'is_add_payment_method_page' ) ) {
2014-02-07 17:57:17 +00:00
/**
2017-10-09 10:39:27 +00:00
* Is_add_payment_method_page - Returns true when viewing the add payment method page .
*
2016-09-02 02:40:36 +00:00
* @ return bool
*/
2014-02-07 17:57:17 +00:00
function is_add_payment_method_page () {
global $wp ;
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'myaccount' );
return ( $page_id && is_page ( $page_id ) && ( isset ( $wp -> query_vars [ 'payment-methods' ] ) || isset ( $wp -> query_vars [ 'add-payment-method' ] ) ) );
2014-02-07 17:57:17 +00:00
}
2013-11-01 17:08:22 +00:00
}
2014-10-16 19:59:45 +00:00
if ( ! function_exists ( 'is_lost_password_page' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_lost_password_page - Returns true when viewing the lost password page .
*
2016-09-02 02:40:36 +00:00
* @ return bool
*/
2014-10-16 19:59:45 +00:00
function is_lost_password_page () {
global $wp ;
2018-05-03 09:23:36 +00:00
$page_id = wc_get_page_id ( 'myaccount' );
return ( $page_id && is_page ( $page_id ) && isset ( $wp -> query_vars [ 'lost-password' ] ) );
2014-10-16 19:59:45 +00:00
}
}
2013-08-09 16:11:15 +00:00
if ( ! function_exists ( 'is_ajax' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_ajax - Returns true when the page is loaded via ajax .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_ajax () {
2018-06-07 09:21:22 +00:00
return function_exists ( 'wp_doing_ajax' ) ? wp_doing_ajax () : defined ( 'DOING_AJAX' );
2013-08-09 16:11:15 +00:00
}
}
2014-01-10 17:17:01 +00:00
if ( ! function_exists ( 'is_store_notice_showing' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_store_notice_showing - Returns true when store notice is active .
*
2014-01-10 17:17:01 +00:00
* @ return bool
*/
function is_store_notice_showing () {
2017-11-14 16:43:35 +00:00
return 'no' !== get_option ( 'woocommerce_demo_store' , 'no' );
2014-01-10 17:17:01 +00:00
}
}
2013-08-09 16:11:15 +00:00
if ( ! function_exists ( 'is_filtered' ) ) {
/**
2017-10-09 10:39:27 +00:00
* Is_filtered - Returns true when filtering products using layered nav or price sliders .
*
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function is_filtered () {
2018-03-13 11:33:48 +00:00
return apply_filters ( 'woocommerce_is_filtered' , ( count ( WC_Query :: get_layered_nav_chosen_attributes () ) > 0 || isset ( $_GET [ 'max_price' ] ) || isset ( $_GET [ 'min_price' ] ) || isset ( $_GET [ 'rating_filter' ] ) ) ); // WPCS: CSRF ok.
2013-08-09 16:11:15 +00:00
}
}
if ( ! function_exists ( 'taxonomy_is_product_attribute' ) ) {
/**
2013-08-20 11:17:51 +00:00
* Returns true when the passed taxonomy name is a product attribute .
2017-10-09 10:39:27 +00:00
*
2015-02-10 10:57:33 +00:00
* @ uses $wc_product_attributes global which stores taxonomy names upon registration
2017-10-09 10:39:27 +00:00
* @ param string $name of the attribute .
2013-08-09 16:11:15 +00:00
* @ return bool
*/
function taxonomy_is_product_attribute ( $name ) {
global $wc_product_attributes ;
return taxonomy_exists ( $name ) && array_key_exists ( $name , ( array ) $wc_product_attributes );
}
2013-08-20 11:17:51 +00:00
}
if ( ! function_exists ( 'meta_is_product_attribute' ) ) {
/**
* Returns true when the passed meta name is a product attribute .
2017-10-09 10:39:27 +00:00
*
* @ param string $name of the attribute .
* @ param string $value of the attribute .
* @ param int $product_id to check for attribute .
2013-08-20 11:17:51 +00:00
* @ return bool
*/
function meta_is_product_attribute ( $name , $value , $product_id ) {
2015-02-10 10:57:33 +00:00
$product = wc_get_product ( $product_id );
2014-02-07 17:56:58 +00:00
2015-07-27 12:03:04 +00:00
if ( $product && method_exists ( $product , 'get_variation_attributes' ) ) {
$variation_attributes = $product -> get_variation_attributes ();
$attributes = $product -> get_attributes ();
2018-03-13 11:33:48 +00:00
return ( in_array ( $name , array_keys ( $attributes ), true ) && in_array ( $value , $variation_attributes [ $attributes [ $name ][ 'name' ] ], true ) );
2015-07-27 12:03:04 +00:00
} else {
2013-11-26 16:48:39 +00:00
return false ;
}
2013-08-20 11:17:51 +00:00
}
2013-10-15 20:59:29 +00:00
}
2014-11-18 16:13:27 +00:00
if ( ! function_exists ( 'wc_tax_enabled' ) ) {
/**
* Are store - wide taxes enabled ?
2017-10-09 10:39:27 +00:00
*
2014-11-18 16:13:27 +00:00
* @ return bool
*/
function wc_tax_enabled () {
2015-06-03 10:49:10 +00:00
return apply_filters ( 'wc_tax_enabled' , get_option ( 'woocommerce_calc_taxes' ) === 'yes' );
2014-11-18 16:13:27 +00:00
}
}
2016-01-05 11:23:15 +00:00
if ( ! function_exists ( 'wc_shipping_enabled' ) ) {
/**
* Is shipping enabled ?
2017-10-09 10:39:27 +00:00
*
2016-01-05 11:23:15 +00:00
* @ return bool
*/
function wc_shipping_enabled () {
return apply_filters ( 'wc_shipping_enabled' , get_option ( 'woocommerce_ship_to_countries' ) !== 'disabled' );
}
}
2014-11-18 16:13:27 +00:00
if ( ! function_exists ( 'wc_prices_include_tax' ) ) {
/**
* Are prices inclusive of tax ?
2017-10-09 10:39:27 +00:00
*
2014-11-18 16:13:27 +00:00
* @ return bool
*/
function wc_prices_include_tax () {
2015-11-17 06:04:59 +00:00
return wc_tax_enabled () && 'yes' === get_option ( 'woocommerce_prices_include_tax' );
2014-11-18 16:13:27 +00:00
}
}
2014-12-17 12:16:14 +00:00
/**
2015-11-03 13:31:20 +00:00
* Simple check for validating a URL , it must start with http :// or https ://.
* and pass FILTER_VALIDATE_URL validation .
2017-10-09 10:39:27 +00:00
*
* @ param string $url to check .
2014-12-17 12:16:14 +00:00
* @ return bool
*/
function wc_is_valid_url ( $url ) {
2017-10-09 10:39:27 +00:00
// Must start with http:// or https://.
2014-12-17 12:16:14 +00:00
if ( 0 !== strpos ( $url , 'http://' ) && 0 !== strpos ( $url , 'https://' ) ) {
return false ;
}
2017-10-09 10:39:27 +00:00
// Must pass validation.
2014-12-17 12:16:14 +00:00
if ( ! filter_var ( $url , FILTER_VALIDATE_URL ) ) {
return false ;
}
return true ;
}
2015-10-22 11:30:27 +00:00
2016-01-08 11:27:13 +00:00
/**
* Check if the home URL is https . If it is , we don 't need to do things such as ' force ssl ' .
*
* @ since 2.4 . 13
* @ return bool
*/
function wc_site_is_https () {
2016-06-06 16:51:34 +00:00
return false !== strstr ( get_option ( 'home' ), 'https:' );
2016-01-08 11:27:13 +00:00
}
2015-10-22 11:30:27 +00:00
/**
* Check if the checkout is configured for https . Look at options , WP HTTPS plugin , or the permalink itself .
2015-11-10 01:08:10 +00:00
*
* @ since 2.5 . 0
* @ return bool
2015-10-22 11:30:27 +00:00
*/
function wc_checkout_is_https () {
2016-01-08 11:27:13 +00:00
return wc_site_is_https () || 'yes' === get_option ( 'woocommerce_force_ssl_checkout' ) || class_exists ( 'WordPressHTTPS' ) || strstr ( wc_get_page_permalink ( 'checkout' ), 'https:' );
2015-10-22 11:30:27 +00:00
}
2016-02-09 10:31:45 +00:00
/**
* Checks whether the content passed contains a specific short code .
*
* @ param string $tag Shortcode tag to check .
* @ return bool
*/
function wc_post_content_has_shortcode ( $tag = '' ) {
global $post ;
2016-07-21 12:17:33 +00:00
return is_singular () && is_a ( $post , 'WP_Post' ) && has_shortcode ( $post -> post_content , $tag );
2016-02-09 10:31:45 +00:00
}