Добавить продукт / загружаемый вариант для отдельных вариантов продукта - PullRequest
1 голос
/ 02 апреля 2020

У меня в магазине куча загружаемых продуктов, каждый из которых имеет разные варианты. Одним из них является пробная версия продукта, которую я хотел бы пометить соответствующим образом. При настройке различных вариантов можно установить «загружаемый», «виртуальный» и т. Д. c. для каждого из вариантов индивидуально в WooCommerce. Я хотел бы добавить еще один флажок ([] Trial Version) внутри самого варианта, а не общий продукт, но я не могу найти подходящее место для добавления этого.

Это то, что я ' мы пробовали после долгого времени проб и ошибок:

add_filter( 'product_type_options', 'add_trialversion_product_option' );
function add_trialversion_product_option( $product_type_options ) 
{
    $product_type_options['trialversion'] = array(
        'id'            => '_trialversion',
        'wrapper_class' => 'show_if_variable',
        'label'         => __( 'Trial Version', 'woocommerce' ),
        'description'   => __( '', 'woocommerce' ),
        'default'       => 'no'
    );
    return $product_type_options;
}


add_action( 'woocommerce_save_product_variation', 'save_trialversion_option_fields'  );
function save_trialversion_option_fields( $post_id ) 
{
    $is_trialversion = isset( $_POST['_trialversion'] ) ? 'yes' : 'no';
    update_post_meta( $post_id, '_trialversion', $is_trialversion );
}

Хотя это добавляет флажок «Пробная версия» в целом к ​​переменному продукту, это не то, что я ищу, так как я хочу установить несколько вариантов продукта, который будет пробной версией, а некоторые - обычной версией .

Спасибо за любую помощь:)

Я добавил изображение здесь, на случай, если неясно, где я хочу добавить флажок: снимок экрана woocommerce

1 Ответ

3 голосов
/ 02 апреля 2020

Это будет работать для каждого и добавлять туда, где вы хотите, так как варианты вариантов находятся не в том месте, где вы пытаетесь фильтровать.

add_action('woocommerce_variation_options', 'he_add_to_variation_option', 10, 3);
function he_add_to_variation_option( $loop, $variation_data, $variation){
    $is_trial = (get_post_meta($variation->ID, '_trialversion', true)) ? ' checked' : '';
    ?>
    <label class="tips" data-tip="<?php esc_attr_e( 'Enable this option to make as a trial version', 'woocommerce' ); ?>">
        <?php esc_html_e( 'Trial Version?', 'woocommerce' ); ?>
        <input type="checkbox" class="checkbox variable_is_trial_version" name="_trialversion[<?php echo esc_attr( $variation->ID ); ?>]"<?php echo $is_trial;?>/>
    </label>
<?php
}

add_action( 'woocommerce_save_product_variation', 'save_trialversion_option_fields'  );
function save_trialversion_option_fields( $post_id ) {
    if ( isset( $_POST['_trialversion'] ) ){
        foreach ( $_POST['_trialversion'] as $productid=>$checked ){
            update_post_meta( $productid, '_trialversion', 'yes' );
        }
    }    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...