Как получить и отобразить данные учетной записи BACS в Woocommerce - PullRequest
0 голосов
/ 06 декабря 2018

У меня очень простая идея, но я не знаю, как это сделать в WooCommerce.

В моем магазине я включил несколько вариантов оплаты, а также оплату банковским переводом.Но когда клиент выбрал банковский перевод, он видит данные, необходимые для осуществления перевода.Но после этого нет возможности отобразить эти данные на странице благодарности, где все это ищут.

Есть простой способ показать эти данные снова?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Данные учетной записи Bacs хранятся в таблице wp_options как большинство настроек Wordpress и Woocommerce.

Доступ к ним можно получить с помощью (что дает многомерный массив различных банковских счетов,как вы можете установить много) :

$bacs_accounts_info = get_option( 'woocommerce_bacs_accounts');

Обычно эти данные отображаются по умолчанию на странице woocommerce и в некоторых уведомлениях клиентов по электронной почте…


Для отображения отформатированногоИнформация о банковских счетах, я создал эту пользовательскую функцию:

// Utility function, to display BACS accounts details
function get_bacs_account_details_html( $echo = true, $type = 'list' ) {

    ob_start();

    $gateway    = new WC_Gateway_BACS();
    $country    = WC()->countries->get_base_country();
    $locale     = $gateway->get_country_locale();
    $bacs_info  = get_option( 'woocommerce_bacs_accounts');

    // Get sortcode label in the $locale array and use appropriate one
    $sort_code_label = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'woocommerce' );

    if( $type = 'list' ) :
    ?>
    <div class="woocommerce-bacs-bank-details">
    <h2 class="wc-bacs-bank-details-heading"><?php _e('Our bank details'); ?></h2>
    <?php
    $i = -1;
    if ( $bacs_info ) : foreach ( $bacs_info as $account ) :
    $i++;

    $account_name   = esc_attr( wp_unslash( $account['account_name'] ) );
    $bank_name      = esc_attr( wp_unslash( $account['bank_name'] ) );
    $account_number = esc_attr( $account['account_number'] );
    $sort_code      = esc_attr( $account['sort_code'] );
    $iban_code      = esc_attr( $account['iban'] );
    $bic_code       = esc_attr( $account['bic'] );
    ?>
    <h3 class="wc-bacs-bank-details-account-name"><?php echo $account_name; ?>:</h3>
    <ul class="wc-bacs-bank-details order_details bacs_details">
        <li class="bank_name"><?php _e('Bank'); ?>: <strong><?php echo $bank_name; ?></strong></li>
        <li class="account_number"><?php _e('Account number'); ?>: <strong><?php echo $account_number; ?></strong></li>
        <li class="sort_code"><?php echo $sort_code_label; ?>: <strong><?php echo $sort_code; ?></strong></li>
        <li class="iban"><?php _e('IBAN'); ?>: <strong><?php echo $iban_code; ?></strong></li>
        <li class="bic"><?php _e('BIC'); ?>: <strong><?php echo $bic_code; ?></strong></li>
    </ul>
    <?php endforeach; endif; ?>
    </div>
    <?php
    else :
    ?>
    <h2><?php _e( 'Account details', 'woocommerce' ); ?>:</h2>
    <table class="widefat wc_input_table" cellspacing="0">
        <thead>
            <tr>
                <th><?php _e( 'Account name', 'woocommerce' ); ?></th>
                <th><?php _e( 'Account number', 'woocommerce' ); ?></th>
                <th><?php _e( 'Bank name', 'woocommerce' ); ?></th>
                <th><?php echo $sort_code_label; ?></th>
                <th><?php _e( 'IBAN', 'woocommerce' ); ?></th>
                <th><?php _e( 'BIC / Swift', 'woocommerce' ); ?></th>
            </tr>
        </thead>
        <tbody class="accounts">
            <?php
            $i = -1;
            if ( $bacs_info ) {
                foreach ( $bacs_info as $account ) {
                    $i++;

                    echo '<tr class="account">
                        <td>' . esc_attr( wp_unslash( $account['account_name'] ) ) . '</td>
                        <td>' . esc_attr( $account['account_number'] ) . '</td>
                        <td>' . esc_attr( wp_unslash( $account['bank_name'] ) ) . '</td>
                        <td>' . esc_attr( $account['sort_code'] ) . '</td>
                        <td>' . esc_attr( $account['iban'] ) . '</td>
                        <td>' . esc_attr( $account['bic'] ) . '</td>
                    </tr>';
                }
            }
            ?>
        </tbody>
    </table>
    <?php
    endif;
    $output = ob_get_clean();

    if ( $echo )
        echo $output;
    else
        return $output;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы) .Протестировано и работает.


ВОЗМОЖНЫЕ ИСПОЛЬЗОВАНИЯ:

1) В любом шаблоне или php-коде вы просто будете использовать для отображения этого аккаунтадетали:

get_bacs_account_details_html();

2) В качестве подключенной функции (где вы установите желаемую ловушку действия).

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

add_action( 'woocommerce_view_order', 'display_bacs_account_details_on_view_order', 5, 1 );
function display_bacs_account_details_on_view_order( $order_id ){
    // Get an instance of the WC_Order object
    $order = wc_get_order( $order_id );

    if( $order->get_payment_method() === 'bacs' && $order->get_status() === 'on-hold' ){
        get_bacs_account_details_html();
    }
}

Код содержится в файле function.php вашей активной дочерней темы (илиактивная тема). Проверено и работает.

enter image description here

3) В качестве короткого кода [bacs_account_details]:

add_shortcode( 'bacs_account_details', 'shortcode_bacs_account_details' );
function shortcode_bacs_account_details() {
    get_bacs_account_details_html( false );
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

  • Тогда вы можете использовать его в любомWordpress редактор страницы, поста или пользовательского поста: [bacs_account_details]
  • Или в коде PHP: echo do_shortcode('[bacs_account_details]');
0 голосов
/ 06 декабря 2018

Используйте действие на странице благодарности, в вашем дочернем файле functions.php или с помощью плагина фрагментов кода

add_action('woocommerce_thankyou', 'customThankYouFunction');

и в своей function напишите свою логику

function customThankYouFunction ($order_id) {
    $order = wc_get_order( $order_id );
    $order_data = $order->get_data(); // The Order data
    $order_id = $order_data['id'];
    $order_parent_id = $order_data['parent_id'];
    $order_status = $order_data['status'];
    $order_currency = $order_data['currency'];
    $order_version = $order_data['version'];
    $order_payment_method = $order_data['payment_method'];
    $order_payment_method_title = $order_data['payment_method_title'];
    $order_payment_method = $order_data['payment_method'];
    $order_payment_method = $order_data['payment_method'];
} 

Вы можете иметь дело с заказом сейчас

Ссылка Как получить детали заказа WooCommerce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...