Search code examples
phpwordpresswoocommercehook-woocommercewoocommerce-theming

WooCommerce show content after variation labels


I want to add content after variation name.

I find this hook and saw it's working before, but no on my test it's not :(

I want to ask, is there another hook/working method I can use to add content?

add_filter('woocommerce_attribute_label', 'custom_attribute_label', 10, 3);
function custom_attribute_label($label, $name, $product){
    $taxonomy = 'pa_' . $name;

    if ($taxonomy == 'pa_size')
        $label .= '<div class="custom-label">' . __('MY TEXT', 'woocommerce') . '</div>';

    return $label;
}

Code reference:
Adding a custom text next to a specific product attribute label in WooCommerce


Solution

  • If you use $label variable, it will return the name without "pa_" prefix. Some variations have "pa_" prefixes and some don't.

    So you don't need to create an extra variable (i.e $taxonomy). Just use $label variable, like this:

    add_filter('woocommerce_attribute_label', 'custom_attribute_label', 10, 3);
    
    function custom_attribute_label($label, $name, $product)
    {
    
        if ('Logo' == $label) 
        {
            $label .= '<div class="custom-label">' . __('MY TEXT', 'woocommerce') . '</div>';
        }
    
        return $label;
    }
    

    enter image description here


    You could use switch statement for checking multiple conditions like this:

    add_filter('woocommerce_attribute_label', 'custom_attribute_label', 10, 3);
    
    function custom_attribute_label($label, $name, $product)
    {
    
        switch ($label) 
        {
            case 'Logo':
                $label .= '<div class="custom-label">' . __('MY TEXT AFTER LOGO', 'woocommerce') . '</div>';
                break;
            case 'Color':
                $label .= '<div class="custom-label">' . __('MY TEXT AFTER COLOR', 'woocommerce') . '</div>';
                break;
        }
    
        return $label;
    }
    

    enter image description here