template_path() . "{$slug}-{$name}.php" ) ); // Get default slug-name.php if ( !$template && $name && file_exists( WC()->plugin_path() . "/templates/{$slug}-{$name}.php" ) ) $template = WC()->plugin_path() . "/templates/{$slug}-{$name}.php"; // If template file doesn't exist, look in yourtheme/slug.php and yourtheme/woocommerce/slug.php if ( !$template ) $template = locate_template( array ( "{$slug}.php", WC()->template_path() . "{$slug}.php" ) ); if ( $template ) load_template( $template, false ); } /** * Get other templates (e.g. product attributes) passing attributes and including the file. * * @access public * @param mixed $template_name * @param array $args (default: array()) * @param string $template_path (default: '') * @param string $default_path (default: '') * @return void */ function woocommerce_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) { if ( $args && is_array($args) ) extract( $args ); $located = woocommerce_locate_template( $template_name, $template_path, $default_path ); do_action( 'woocommerce_before_template_part', $template_name, $template_path, $located, $args ); include( $located ); do_action( 'woocommerce_after_template_part', $template_name, $template_path, $located, $args ); } /** * Locate a template and return the path for inclusion. * * This is the load order: * * yourtheme / $template_path / $template_name * yourtheme / $template_name * $default_path / $template_name * * @access public * @param mixed $template_name * @param string $template_path (default: '') * @param string $default_path (default: '') * @return string */ function woocommerce_locate_template( $template_name, $template_path = '', $default_path = '' ) { if ( ! $template_path ) $template_path = WC()->template_path(); if ( ! $default_path ) $default_path = WC()->plugin_path() . '/templates/'; // Look within passed path within the theme - this is priority $template = locate_template( array( trailingslashit( $template_path ) . $template_name, $template_name ) ); // Get default template if ( ! $template ) $template = $default_path . $template_name; // Return what we found return apply_filters('woocommerce_locate_template', $template, $template_name, $template_path); } /** * Get Base Currency Code. * @return string */ function get_woocommerce_currency() { return apply_filters( 'woocommerce_currency', get_option('woocommerce_currency') ); } /** * Get full list of currency codes. * @return array */ function get_woocommerce_currencies() { return array_unique( apply_filters( 'woocommerce_currencies', array( 'AUD' => __( 'Australian Dollars', 'woocommerce' ), 'BRL' => __( 'Brazilian Real', 'woocommerce' ), 'BGN' => __( 'Bulgarian Lev', 'woocommerce' ), 'CAD' => __( 'Canadian Dollars', 'woocommerce' ), 'CNY' => __( 'Chinese Yuan', 'woocommerce' ), 'CZK' => __( 'Czech Koruna', 'woocommerce' ), 'DKK' => __( 'Danish Krone', 'woocommerce' ), 'EUR' => __( 'Euros', 'woocommerce' ), 'HKD' => __( 'Hong Kong Dollar', 'woocommerce' ), 'HUF' => __( 'Hungarian Forint', 'woocommerce' ), 'IDR' => __( 'Indonesia Rupiah', 'woocommerce' ), 'INR' => __( 'Indian Rupee', 'woocommerce' ), 'ILS' => __( 'Israeli Shekel', 'woocommerce' ), 'JPY' => __( 'Japanese Yen', 'woocommerce' ), 'KRW' => __( 'South Korean Won', 'woocommerce' ), 'MYR' => __( 'Malaysian Ringgits', 'woocommerce' ), 'MXN' => __( 'Mexican Peso', 'woocommerce' ), 'NOK' => __( 'Norwegian Krone', 'woocommerce' ), 'NZD' => __( 'New Zealand Dollar', 'woocommerce' ), 'PHP' => __( 'Philippine Pesos', 'woocommerce' ), 'PLN' => __( 'Polish Zloty', 'woocommerce' ), 'GBP' => __( 'Pounds Sterling', 'woocommerce' ), 'RON' => __( 'Romanian Leu', 'woocommerce' ), 'RUB' => __( 'Russian Ruble', 'woocommerce' ), 'SGD' => __( 'Singapore Dollar', 'woocommerce' ), 'ZAR' => __( 'South African rand', 'woocommerce' ), 'SEK' => __( 'Swedish Krona', 'woocommerce' ), 'CHF' => __( 'Swiss Franc', 'woocommerce' ), 'TWD' => __( 'Taiwan New Dollars', 'woocommerce' ), 'THB' => __( 'Thai Baht', 'woocommerce' ), 'TRY' => __( 'Turkish Lira', 'woocommerce' ), 'USD' => __( 'US Dollars', 'woocommerce' ), 'VND' => __( 'Vietnamese Dong', 'woocommerce' ), ) ) ); } /** * Get Currency symbol. * @param string $currency (default: '') * @return string */ function get_woocommerce_currency_symbol( $currency = '' ) { if ( ! $currency ) $currency = get_woocommerce_currency(); switch ( $currency ) { case 'BRL' : $currency_symbol = 'R$'; break; case 'BGN' : $currency_symbol = 'лв.'; break; case 'AUD' : case 'CAD' : case 'MXN' : case 'NZD' : case 'HKD' : case 'SGD' : case 'USD' : $currency_symbol = '$'; break; case 'EUR' : $currency_symbol = '€'; break; case 'CNY' : case 'RMB' : case 'JPY' : $currency_symbol = '¥'; break; case 'RUB' : $currency_symbol = 'руб.'; break; case 'KRW' : $currency_symbol = '₩'; break; case 'TRY' : $currency_symbol = 'TL'; break; case 'NOK' : $currency_symbol = 'kr'; break; case 'ZAR' : $currency_symbol = 'R'; break; case 'CZK' : $currency_symbol = 'Kč'; break; case 'MYR' : $currency_symbol = 'RM'; break; case 'DKK' : $currency_symbol = 'kr'; break; case 'HUF' : $currency_symbol = 'Ft'; break; case 'IDR' : $currency_symbol = 'Rp'; break; case 'INR' : $currency_symbol = 'Rs.'; break; case 'ILS' : $currency_symbol = '₪'; break; case 'PHP' : $currency_symbol = '₱'; break; case 'PLN' : $currency_symbol = 'zł'; break; case 'SEK' : $currency_symbol = 'kr'; break; case 'CHF' : $currency_symbol = 'CHF'; break; case 'TWD' : $currency_symbol = 'NT$'; break; case 'THB' : $currency_symbol = '฿'; break; case 'GBP' : $currency_symbol = '£'; break; case 'RON' : $currency_symbol = 'lei'; break; case 'VND' : $currency_symbol = '₫'; break; default : $currency_symbol = ''; break; } return apply_filters( 'woocommerce_currency_symbol', $currency_symbol, $currency ); } /** * Send HTML emails from WooCommerce * * @param mixed $to * @param mixed $subject * @param mixed $message * @param string $headers (default: "Content-Type: text/html\r\n") * @param string $attachments (default: "") */ function woocommerce_mail( $to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = "" ) { global $woocommerce; $mailer = $woocommerce->mailer(); $mailer->send( $to, $subject, $message, $headers, $attachments ); } /** * Get an image size. * * Variable is filtered by woocommerce_get_image_size_{image_size} * * @param string $image_size * @return array */ function wc_get_image_size( $image_size ) { if ( in_array( $image_size, array( 'shop_thumbnail', 'shop_catalog', 'shop_single' ) ) ) { $size = get_option( $image_size . '_image_size', array() ); $size['width'] = isset( $size['width'] ) ? $size['width'] : '300'; $size['height'] = isset( $size['height'] ) ? $size['height'] : '300'; $size['crop'] = isset( $size['crop'] ) ? $size['crop'] : 1; } else { $size = array( 'width' => '300', 'height' => '300', 'crop' => 1 ); } return apply_filters( 'woocommerce_get_image_size_' . $image_size, $size ); } /** * Queue some JavaScript code to be output in the footer. * * @param string $code */ function wc_enqueue_js( $code ) { global $wc_queued_js; if ( empty( $wc_queued_js ) ) $wc_queued_js = ""; $wc_queued_js .= "\n" . $code . "\n"; } /** * Output any queued javascript code in the footer. */ function wc_print_js() { global $wc_queued_js; if ( ! empty( $wc_queued_js ) ) { echo "\n\n"; unset( $wc_queued_js ); } } /** * Set a cookie - wrapper for setcookie using WP constants * * @param string $name Name of the cookie being set * @param string $value Value of the cookie * @param integer $expire Expiry of the cookie */ function wc_setcookie( $name, $value, $expire = 0 ) { if ( ! headers_sent() ) { setcookie( $name, $value, $expire, COOKIEPATH, COOKIE_DOMAIN, false ); } elseif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { trigger_error( "Cookie cannot be set - headers already sent", E_USER_NOTICE ); } } /** * Get the URL to the WooCommerce REST API * * @since 2.1 * @param string $path an endpoint to include in the URL * @return string the URL */ function get_woocommerce_api_url( $path ) { $url = get_home_url( null, 'wc-api/v' . WC_API::VERSION . '/', ( 'yes' === get_option( 'woocommerce_force_ssl_checkout' ) ) ? 'https' : 'http' ); if ( ! empty( $path ) && is_string( $path ) ) $url .= ltrim( $path, '/' ); return $url; }