How do I change button text from “Choose an option” in Woocommerce?

后端 未结 8 1459
你的背包
你的背包 2021-02-08 16:28

How would I go about changing this PHP code to to change Choose an option based on the id of the select element in the Woocommerce plugin for WordPress? I believe I have found t

相关标签:
8条回答
  • 2021-02-08 16:50

    Here's a pretty simple solution for WC >2.4 that avoids rewriting functions and cluttering up your functions.php..

    Add the variable.php file to your theme (http://docs.woothemes.com/document/template-structure/), and change this (from line 27):

    <?php foreach ( $attributes as $attribute_name => $options ) : ?>
    <tr>
        <td class="label"><label for="<?php echo sanitize_title( $attribute_name ); ?>"><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
        <td class="value">
            <?php
                $selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $product->get_variation_default_attribute( $attribute_name );
                wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
                echo end( $attribute_keys ) === $attribute_name ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : '';
            ?>
        </td>
    </tr><?php endforeach;?>
    

    to this:

    <?php 
    $variations_arr = array();
    foreach ( $attributes as $attribute_name => $options ) : 
        ob_start(); ?>
        <tr>
            <td class="label"><label for="<?php echo sanitize_title( $attribute_name ); ?>"><?php echo wc_attribute_label( $attribute_name ); ?></label></td>
            <td class="value">
                <?php $selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) : $product->get_variation_default_attribute( $attribute_name );
                wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
                echo end( $attribute_keys ) === $attribute_name ? '<a class="reset_variations" href="#">' . __( 'Clear selection', 'woocommerce' ) . '</a>' : ''; ?>
            </td>
        </tr>
        <?php $variations_ob = ob_get_clean();
        $variations_arr[wc_attribute_label($attribute_name)] = $variations_ob;
    endforeach;
    
    foreach ($variations_arr as $name => $ob) {
        echo str_ireplace('choose an option', 'Choose '.$name, $ob );
    } ?>
    

    This will replace 'Choose an option' with 'Choose Size', 'Choose Colour' etc. depending on the name of your attribute.

    0 讨论(0)
  • 2021-02-08 16:53

    If you are wondering how to replace “Choose an option” with corresponding attribute/variation name, then here’s how you can do that. edit variable.php and lookout for the code as the one shown below

    Open the variable.php(wp-content/plugins/woocommerce/includes/variable.php) file to your woocommerce and change this (from line 41 to 43): (Remove this 3 line code)

    $selected = isset( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ? wc_clean( urldecode( $_REQUEST[ 'attribute_' . sanitize_title( $attribute_name ) ] ) ) : $product->get_variation_default_attribute( $attribute_name );
    wc_dropdown_variation_attribute_options( array( 'options' => $options, 'attribute' => $attribute_name, 'product' => $product, 'selected' => $selected ) );
    echo end( $attribute_keys ) === $attribute_name ? apply_filters( 'woocommerce_reset_variations_link', '<a class="reset_variations" href="#">' . __( 'Clear', 'woocommerce' ) . '</a>' ) : '';
    

    Then add this code

    wc_dropdown_variation_attribute_options
    array( 'options' => $options,
    'attribute' => $attribute_name,
    'product' => $product,
    'selected' => $selected,
    'show_option_none'=> wc_attribute_label( $attribute_name )
    ) );
    

    It's working all WordPress version Thanks

    0 讨论(0)
提交回复
热议问题