WC_Product_Variation::get_permalink
Wrapper for get_permalink. Adds this variations attributes to the URL.
Method of the class: WC_Product_Variation{}
No Hooks.
Returns
String.
Usage
$WC_Product_Variation = new WC_Product_Variation(); $WC_Product_Variation->get_permalink( $item_object );
- $item_object(array|null)
- item array If a cart or order item is passed, we can get a link containing the exact attributes selected for the variation, rather than the default attributes.
Default: null
WC_Product_Variation::get_permalink() WC Product Variation::get permalink code WC 10.4.3
public function get_permalink( $item_object = null ) {
$url = get_permalink( $this->get_parent_id() );
if ( ! empty( $item_object['item_meta_array'] ) ) {
$data_keys = array_map( 'wc_variation_attribute_name', wp_list_pluck( $item_object['item_meta_array'], 'key' ) );
$data_values = wp_list_pluck( $item_object['item_meta_array'], 'value' );
$data = array_intersect_key( array_combine( $data_keys, $data_values ), $this->get_variation_attributes() );
} elseif ( ! empty( $item_object['variation'] ) ) {
$data = $item_object['variation'];
} else {
$data = $this->get_variation_attributes();
}
$data = array_filter( $data, 'wc_array_filter_default_attributes' );
if ( empty( $data ) ) {
return $url;
}
// Filter and encode keys and values so this is not broken by add_query_arg.
$data = array_map( 'urlencode', $data );
$keys = array_map( 'urlencode', array_keys( $data ) );
return add_query_arg( array_combine( $keys, $data ), $url );
}