#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));