woocommer if variation_settings_fields

#php #wordpress #woocommerce

#php #wordpress #woocommerce

Вопрос:

итак, я добавил новый раздел в вариант woocommerce. который должен выводить значение 1, 2 или по умолчанию с помощью {{{ data.variation.ok_mensualidad }}}, но это не работает. Я много раз проверял значение {{{ data.variation.ok_mensualidad }}} . когда я запускаю ( int ) и ( float ), я получаю «0», но {{{ data.variation.ok_mensualidad }}} всегда выдает правильное значение, но не распознается внутри моего оператора if..

пожалуйста, помогите! я занимался этим целый день.

хо

я создал все следующим образом:

 add_action( 'woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2 );

    function variation_settings_fields( $loop, $variation_data, $variation ) {

    // CHECK IF MENSUALIDAD WILL BE ENABLED
            woocommerce_wp_select( 
            array( 
                'id'          => '_ok_mensualidad[' . $variation->ID . ']', 
                'label'       => __( 'Hay Mensualidad?', 'woocommerce' ), 
                'description' => __( '<span style="color:red; padding-left:15px;">ESCOJA PARA ESCONDER PRIMERA MENSUALIDAD</span>', 'woocommerce' ),
                'value'       => get_post_meta( $variation->ID, '_ok_mensualidad', true ),
                'options' => array(

                    "blank" => __( ' ', 'woocommerce' ),
                    "1"   => __( 'Si, pagos mensuales', 'woocommerce' ),
                    "2"   => __( 'NO, pago entero', 'woocommerce' ),
                    )
                )
            );


function save_variation_settings_fields( $post_id ) {
// SAVE BOOLEON VALUE MENSUALIDAD
    $select = $_POST['_ok_mensualidad'][ $post_id ];
    if( ! empty( $select ) ) {
        update_post_meta( $post_id, '_ok_mensualidad', esc_attr( $select ) );
    }
}
  

в значительной степени, если они выбирают «Si, pagos Menusales» -> выводится ‘1’, если выводится «нет» -> 2.

чтобы вернуть это в ваш шаблон, я использую: {{{ data.variation.ok_mensualidad }}} ;

тем не менее, мне нужно запустить, и если еще, зная, что wordpress может быть ненадежным с переменными в вашей теме, я создал функцию внутри function.php

 function fide_ok(){

    $ok_mensualidad = '{{{ data.variation.ok_mensualidad }}}';

    if( $ok_mensualidad==1) {
            echo '<div class="fi-variation-mensualidad"> <p><strong>1 Mensualidad: USD</strong> {{{ data.variation.fi_mensualidad }}}</p> </div>';              
            }else{
                echo 'THE VALUE IS 2 or something else';    
            }
}
  

я попытался проверить, используя это:

 $ok_mensualidad = '{{{ data.variation.ok_mensualidad }}}';e 
$changed_ok = intval($ok_mensualidad);
$float_ok = (float)$ok_mensualidad;

echo 'Variation: {{{ data.variation.ok_mensualidad }}}' . '<br><br>';
echo 'ok: ' . $ok_mensualidad . '<br><br>' ;
echo 'changed: ' . $changed_ok . '<br><br>';
echo 'float: ' . $float_ok . '<br><br>';
  

После рендеринга во внешнем интерфейсе, когда {{{ data.variation.ok_mensualidad }}} = 2 я получаю:

Вариант: 2

ок: 2

изменено: 0

значение с плавающей точкой: 0

Комментарии:

1. сделайте var_dump($ok_mensualidad); какой это тип?

2. я получаю: строка (37) «1», а когда выбрано два: строка (37) «2»

3. Это означает, что вы получаете строку из 37 символов. попробуйте сделать: для($i = 1; $i < 37; $i ) var_dump(substr($ok_mensualidad, $i, 1));