2013-09-12 13:41:02 +00:00
< ? php
/**
* WooCommerce Attribute Functions
*
* @ author WooThemes
* @ category Core
* @ package WooCommerce / Functions
* @ version 2.1 . 0
*/
2014-09-20 19:04:38 +00:00
if ( ! defined ( 'ABSPATH' ) ) {
exit ; // Exit if accessed directly
}
2013-09-12 13:41:02 +00:00
/**
* Get attribute taxonomies .
*
* @ return object
*/
function wc_get_attribute_taxonomies () {
$transient_name = 'wc_attribute_taxonomies' ;
if ( false === ( $attribute_taxonomies = get_transient ( $transient_name ) ) ) {
global $wpdb ;
$attribute_taxonomies = $wpdb -> get_results ( " SELECT * FROM " . $wpdb -> prefix . " woocommerce_attribute_taxonomies " );
2014-03-12 11:58:41 +00:00
set_transient ( $transient_name , $attribute_taxonomies );
2013-09-12 13:41:02 +00:00
}
return apply_filters ( 'woocommerce_attribute_taxonomies' , $attribute_taxonomies );
}
/**
* Get a product attributes name .
*
* @ param mixed $name
* @ return string
*/
function wc_attribute_taxonomy_name ( $name ) {
2013-11-25 13:34:21 +00:00
return 'pa_' . wc_sanitize_taxonomy_name ( $name );
2013-09-12 13:41:02 +00:00
}
/**
* Get a product attributes label .
*
2015-03-09 13:40:07 +00:00
* @ param string $name
* @ param object $product object Optional
2013-09-12 13:41:02 +00:00
* @ return string
*/
2015-03-09 13:40:07 +00:00
function wc_attribute_label ( $name , $product = '' ) {
2013-09-12 13:41:02 +00:00
global $wpdb ;
if ( taxonomy_is_product_attribute ( $name ) ) {
2013-11-25 13:34:21 +00:00
$name = wc_sanitize_taxonomy_name ( str_replace ( 'pa_' , '' , $name ) );
2013-09-12 13:41:02 +00:00
$label = $wpdb -> get_var ( $wpdb -> prepare ( " SELECT attribute_label FROM { $wpdb -> prefix } woocommerce_attribute_taxonomies WHERE attribute_name = %s; " , $name ) );
2014-03-20 15:47:52 +00:00
if ( ! $label ) {
2015-03-13 22:41:12 +00:00
$label = $name ;
2014-03-20 15:47:52 +00:00
}
2015-03-09 13:40:07 +00:00
} elseif ( $product && ( $attributes = $product -> get_attributes () ) && isset ( $attributes [ sanitize_title ( $name ) ][ 'name' ] ) ) {
// Attempt to get label from product, as entered by the user
$label = $attributes [ sanitize_title ( $name ) ][ 'name' ];
2013-09-12 13:41:02 +00:00
} else {
2015-03-13 22:41:12 +00:00
$label = str_replace ( '-' , ' ' , $name );
2013-09-12 13:41:02 +00:00
}
2015-03-09 13:40:07 +00:00
return apply_filters ( 'woocommerce_attribute_label' , $label , $name , $product );
2013-09-12 13:41:02 +00:00
}
/**
* Get a product attributes orderby setting .
*
* @ param mixed $name
* @ return string
*/
function wc_attribute_orderby ( $name ) {
global $wpdb ;
$name = str_replace ( 'pa_' , '' , sanitize_title ( $name ) );
$orderby = $wpdb -> get_var ( $wpdb -> prepare ( " SELECT attribute_orderby FROM " . $wpdb -> prefix . " woocommerce_attribute_taxonomies WHERE attribute_name = %s; " , $name ) );
return apply_filters ( 'woocommerce_attribute_orderby' , $orderby , $name );
}
/**
* Get an array of product attribute taxonomies .
*
* @ access public
* @ return array
*/
function wc_get_attribute_taxonomy_names () {
$taxonomy_names = array ();
$attribute_taxonomies = wc_get_attribute_taxonomies ();
if ( $attribute_taxonomies ) {
foreach ( $attribute_taxonomies as $tax ) {
$taxonomy_names [] = wc_attribute_taxonomy_name ( $tax -> attribute_name );
}
}
return $taxonomy_names ;
2014-03-07 08:29:01 +00:00
}