Добавить пользовательский платежный шлюз с формой в Woocommerce

Поскольку этот поток наткнулся, я собрал несколько точек для новых читателей в this.

Как определено значение this?

Мы используем это подобно тому, как мы используем местоимения в естественных языках, таких как английский: «Джон работает быстро, потому что он пытается поймать поезд». Вместо этого мы могли бы написать «... Джон пытается поймать поезд ».

var person = {    
    firstName: "Penelope",
    lastName: "Barrymore",
    fullName: function () {

    // We use "this" just as in the sentence above:
       console.log(this.firstName + " " + this.lastName);

    // We could have also written:
       console.log(person.firstName + " " + person.lastName);
    }
}

this не присваивается значение, пока объект не вызовет функцию, в которой он определен. В глобальной области действия все глобальные переменные и функции определяются на объекте window. Следовательно, this в глобальной функции относится к (и имеет значение) глобальный объект window.

Когда use strict, this в глобальном и в анонимных функциях, не связанных с каким-либо объектом, имеет значение undefined.

Ключевое слово this g0] наиболее непонятно , когда: 1) мы используем метод, который использует this, 2) мы назначаем метод, который использует this для переменной, 3) функция, которая использует this, передается как функция обратного вызова и 4) this используется внутри замыкания - внутренней функции. (2)

table [/g10]

Что содержит будущее

Определено в сценарии ECMA 6 , стрелка- функции принимают привязку this из охватывающей (функциональной или глобальной) области.

function foo() {
     // return an arrow function
     return (a) => {
     // `this` here is lexically inherited from `foo()`
     console.log(this.a);
  };
}
var obj1 = { a: 2 };
var obj2 = { a: 3 };

var bar = foo.call(obj1);
bar.call( obj2 ); // 2, not 3!

Хотя функции-стрелки предоставляют альтернативу использованию bind(), важно отметить, что они по существу отключают традиционный механизм this в пользу более широкого понимания лексического охвата. (1)


Ссылки:

  1. this & amp; Object Prototypes, автор Kyle Simpson. © 2014 Getify Solutions.
  2. javascriptissexy.com - http://goo.gl/pvl0GX
  3. Ангус Кролл - http: // goo .gl / Z2RacU

0
задан LoicTheAztec 10 April 2019 в 12:07
поделиться

1 ответ

Попробуйте следующие функции замены кода (для нескольких флажков):

    /**
     * Output the "payment type" fields in checkout.
     */
    public function payment_fields(){
        if ( $description = $this->get_description() ) {
            echo wpautop( wptexturize( $description ) );
        }

        woocommerce_form_field( 'transaction_type-1', array(
            'type'          => 'checkbox',
            'class'         => array('transaction_type form-row-wide'),
            'label'         => __('Espèces', $this->domain),
        ), '' );

        woocommerce_form_field( 'transaction_type-2', array(
            'type'          => 'checkbox',
            'class'         => array('transaction_type form-row-wide'),
            'label'         => __('Tickets restaurants', $this->domain),
        ), '' );

        woocommerce_form_field( 'transaction_type-3', array(
            'type'          => 'checkbox',
            'class'         => array('transaction_type form-row-wide'),
            'label'         => __('Chèques vacances', $this->domain),
        ), '' );

        $option_keys = array_keys($this->options);

        woocommerce_form_field( 'transaction_type-4', array(
            'type'          => 'radio',
            'class'         => array('transaction_type form-row-wide'),
            'label'         => __('Payment Information - Test', $this->domain),
            'options'       => $this->options,
        ), reset( $option_keys ) );
    }

    /**
     * Save the chosen payment type as order meta data.
     *
     * @param object $order
     * @param array $data
     */
    public function save_order_payment_type_meta_data( $order, $data ) {
        if ( $data['payment_method'] === $this->id ) {
            $meta_value = array(); // Initializing

            if ( isset(

Попробуйте следующие функции замены кода (для нескольких флажков):

[110]

Должно работать лучше…

Тема: Добавить пользовательский платежный шлюз с дополнительными переключателями в Woocommerce

POST['transaction_type-1']) ) { $meta_value[1] = __('Espèces', $this->domain); } if ( isset(

Попробуйте следующие функции замены кода (для нескольких флажков):

[110]

Должно работать лучше…

Тема: Добавить пользовательский платежный шлюз с дополнительными переключателями в Woocommerce

POST['transaction_type-2']) ) { $meta_value[2] = __('Tickets restaurants', $this->domain); } if ( isset(

Попробуйте следующие функции замены кода (для нескольких флажков):

[110]

Должно работать лучше…

Тема: Добавить пользовательский платежный шлюз с дополнительными переключателями в Woocommerce

POST['transaction_type-3']) ) { $meta_value[3] = __('Chèques vacances', $this->domain); } // Save transaction type (from fields 1 to 3) as an array if( sizeof($meta_value) > 0 ) { $order->update_meta_data('_transaction_type', $meta_value ); } // Save transaction type test (from fields 4) as a string if ( isset(

Попробуйте следующие функции замены кода (для нескольких флажков):

[110]

Должно работать лучше…

Тема: Добавить пользовательский платежный шлюз с дополнительными переключателями в Woocommerce

POST['transaction_type-4']) ) { $order->update_meta_data('_transaction_type_test', esc_attr(

Попробуйте следующие функции замены кода (для нескольких флажков):

[110]

Должно работать лучше…

Тема: Добавить пользовательский платежный шлюз с дополнительными переключателями в Woocommerce

POST['transaction_type-4']) ); } } } /** * Display the chosen payment type on order totals table * * @param array $total_rows * @param WC_Order $order * @param bool $tax_display * @return array */ public function display_transaction_type_order_item_totals( $total_rows, $order, $tax_display ){ if( is_a( $order, 'WC_Order' ) && $order->get_meta('_transaction_type') ) { $new_rows = []; // Initializing $options = $this->options; // Loop through order total lines foreach( $total_rows as $total_key => $total_values ) { $new_rows[$total_key] = $total_values; if( $total_key === 'payment_method' ) { // Get transaction type array if( $meta_data = $order->get_meta('_transaction_type') ) { $new_rows['payment_type'] = [ 'label' => __("Transaction type", $this->domain) . ':', 'value' => implode(',', $meta_data), ]; } } } $total_rows = $new_rows; } return $total_rows; }

Должно работать лучше…

Тема: Добавить пользовательский платежный шлюз с дополнительными переключателями в Woocommerce

0
ответ дан LoicTheAztec 10 April 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: