Как изменить эту сложную функцию для простого перенаправления - PullRequest
3 голосов
/ 30 декабря 2011

Я вносил некоторые изменения в плагин для электронной коммерции WordPress и вынул множество функций, чтобы сделать его проще для моих нужд. Теперь он не будет перенаправлен на страницу спасибо после нажатия кнопки покупки, потому что функция использует некоторые переменные, от которых я избавился, например order_id и т. Д.

Я работаю над этим уже несколько часов, и все, чего я хочу, это перенаправить на thankyou.php по нажатию кнопки покупки. (Я знаю, что сейчас он использует ajax, и я бы тоже не стал его использовать). Мне не нужно переходить к функции processpayment или чему-то в этом роде. Действительно просто.

Вот код и функции, с которыми я работаю:

Большое спасибо !!!

Элемент ввода:

<div id="payment">

        <div class="form-row">

            <noscript><?php _e('Since your browser does not support JavaScript, or it is disabled, please ensure you click the <em>Update Totals</em> button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'jigoshop'); ?><br/><input type="submit" class="button-alt" name="update_totals" value="<?php _e('Update totals', 'jigoshop'); ?>" /></noscript>

            <?php jigoshop::nonce_field('process_checkout')?>
            <input type="submit" class="button-alt" name="place_order" id="place_order" value="<?php _e('Next Step', 'jigoshop'); ?>" />

            <?php do_action( 'jigoshop_review_order_before_submit' ); ?>

            <?php if (get_option('jigoshop_terms_page_id')>0) : ?>
            <p class="form-row terms">
                <label for="terms" class="checkbox"><?php _e('I accept the', 'jigoshop'); ?> <a href="<?php echo get_permalink(get_option('jigoshop_terms_page_id')); ?>" target="_blank"><?php _e('terms &amp; conditions', 'jigoshop'); ?></a></label>
                <input type="checkbox" class="input-checkbox" name="terms" <?php if (isset($_POST['terms'])) echo 'checked="checked"'; ?> id="terms" />
            </p>
            <?php endif; ?>

            <?php do_action( 'jigoshop_review_order_after_submit' ); ?>

        </div>

    </div>

checkout.class.php:

        // Process Payment
                    $result = $available_gateways["cheque"]->process_payment( $order_id );


                    // Redirect to success/confirmation/payment page

                        if (is_ajax()) : 
                            ob_clean();
                            echo json_encode($result);
                            exit;
                        else :
                            wp_safe_redirect( $result['redirect'] );
                            exit;
                        endif;


                else :

                    // No payment was required for order
                    $order->payment_complete();

                    // Empty the Cart
                    jigoshop_cart::empty_cart();

                    // Redirect to success/confirmation/payment page
                    $checkout_redirect = apply_filters( 'jigoshop_get_checkout_redirect_page_id', get_option( 'jigoshop_thanks_page_id' ) );
                    if (is_ajax()) : 
                        ob_clean();
                        echo json_encode( array( 'redirect' => get_permalink( $checkout_redirect ) ) );
                        exit;
                    else :
                        wp_safe_redirect( get_permalink( $checkout_redirect ) );
                        exit;
                    endif;

                endif;

                // Break out of loop
                break;

функция обработки платежей:

function process_payment() {


        // Remove cart
        jigoshop_cart::empty_cart();

        // Return thankyou redirect
        $checkout_redirect = apply_filters( 'jigoshop_get_checkout_redirect_page_id', get_option( 'jigoshop_thanks_page_id' ) );
        return array(
            'result'    => 'success',
            'redirect'  => add_query_arg('key', $order->order_key, add_query_arg('order', $order_id, get_permalink( $checkout_redirect )))
        );

    }

Вот подробности ошибки, которые я получаю от firebug:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

После того, как я включил отладку, я получил эти ошибки:

Примечание: неопределенный индекс: aiosp_enabled in /home2/findmyki/public_html/bolistylus/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php по линии 710

Примечание: неопределенный индекс: aiosp_enabled in /home2/findmyki/public_html/bolistylus/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php по линии 710

Примечание: использование неопределенной константы PLUGIN_URL - предполагается, что PLUGIN_URL в /home2/findmyki/public_html/bolistylus/wp-content/plugins/wp-google-fonts/google-fonts.php по линии 81

Примечание: использование неопределенной константы PLUGIN_PATH - предполагается, что PLUGIN_PATH в /home2/findmyki/public_html/bolistylus/wp-content/plugins/wp-google-fonts/google-fonts.php по линии 82

Примечание: неопределенный индекс: хост в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jetpack/jetpack.php по линии 2306

Примечание: неопределенный индекс: имя-отгрузки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 198

Примечание: неопределенный индекс: shipping-last_name in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 199

Примечание: неопределенный индекс: судоходная компания в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 200

Примечание: неопределенный индекс: адрес доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 201

Примечание: неопределенный индекс: shipping-address-2 in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 202

Примечание: неопределенный индекс: город доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 203

Примечание: неопределенный индекс: состояние доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 204

Примечание: неопределенный индекс: почтовый индекс доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 205

Примечание: неопределенный индекс: страна доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 206

ВАЖНО:

Примечание: неопределенная переменная: user_id в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 211

Примечание: неопределенный индекс: order_comments in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php256

Примечание: неопределенный индекс: биллинговая компания в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 264

Примечание: неопределенный индекс: адрес для выставления счетов в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 265

Примечание: неопределенный индекс: выставление счетов-address-2 в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 266

Примечание: неопределенный индекс: город для выставления счетов в / home2 / findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 267

Примечание: неопределенный индекс: почтовый индекс биллинга в / home2 / findmyki / public_html / bolistylus / wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 268

Примечание: неопределенный индекс: страна выставления счетов в / home2 / findmyki / public_html / bolistylus / wp-content / plugins / jigoshop / classes / jigoshop_checkout.class.php в строке 269

Примечание: неопределенный индекс: состояние выставления счетов в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 270

Примечание: неопределенный индекс: телефон для выставления счетов в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 272

Примечание:Неопределенный индекс: shipping_method в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 282

Примечание: неопределенный индекс: payment_methoki / / homepublic_html / bolistylus / wp-content / plugins / jigoshop / classes / jigoshop_checkout.class.php в строке 283

Примечание: неопределенный индекс: aiosp_edit в / home2 / findmyki / public_html / bolistylus / wp-content / plugins /all-in-one-seo-pack / aioseop.class.php в строке 1105

Примечание: неопределенный индекс: nonce-aioseop-edit в / home2 / findmyki / public_html / bolistylus / wp-content / plugins /все в-one-seo-pack / aioseop.class.php в строке 1106

ВАЖНО:

Примечание: неопределенная переменная: user_id в / home2 / findmyki / public_html / bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 364

Примечание: неопределенная переменная: available_gateways в / home2 / findmyki / public_html / bolistylus / wp-content / plugins / jigoshop / classes/jigoshop_checkout.class.php в строке 379

ВАЖНО:

Неустранимая ошибка: вызов функции-члена process_payment () для необъекта в / home2 / findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 379

Примечание: неопределенный индекс: aiosp_enabled в / home2 / findmyki / public_html / bolistylus / wp-bolistylus / wp/all-in-one-seo-pack/all_in_one_seo_pack.php в строке 710

Примечание: неопределенный индекс: aiosp_enabled в / home2 / findmyki / public_html / bolistylus / wp-content / plugins / all-in-one-seo-pack / all_in_one_seo_pack.php в строке 710

Примечание: использование неопределенной константы PLUGIN_URL - предполагается, что PLUGIN_URL в /home2/findmyki/public_html/bolistylus/wp-content/plugins/wp-google-fonts/google-fonts.php в строке 81

Примечание: использование неопределенной константы PLUGIN_PATH - предполагается, что PLUGIN_PATH в /home2/findmyki/public_html/bolistylus/wp-content/plugins/wp-google-fonts/google-fonts.php в строке 82

Примечание: неопределенный индекс: хост в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jetpack/jetpack.php в строке 2306

Примечание: неопределенный индекс: shipping-first_name в / home2 /findmyki / public_html / bolistylus / wp-content / plugins / jigoshop / classes / jigoshop_checkout.class.php в строке 198

Примечание: неопределенный индекс: shipping-last_name in/home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 199

Примечание: неопределенный индекс: судоходная компания в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 200

Примечание: неопределенный индекс: адрес доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 201

Примечание: неопределенный индекс: shipping-address-2 in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 202

Примечание: неопределенный индекс: город доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 203

Примечание: неопределенный индекс: состояние доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 204

Примечание: неопределенный индекс: почтовый индекс доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 205

Примечание: неопределенный индекс: страна доставки в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 206

Примечание: неопределенная переменная: user_id в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 211

Примечание: неопределенный индекс: order_comments in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 256

Примечание: неопределенный индекс: биллинговая компания в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 264

Примечание: неопределенный индекс: адрес для выставления счета в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 265

Примечание: неопределенный индекс: billing-address-2 in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 266

Примечание: неопределенный индекс: город выставления счетов в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 267

Примечание: неопределенный индекс: платежный индекс в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 268

Примечание: неопределенный индекс: страна выставления счета в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 269

Примечание: неопределенный индекс: состояние выставления счета в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 270

Примечание: неопределенный индекс: биллинг-телефон в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 272

Примечание: неопределенный индекс: shipping_method in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 282

Примечание: неопределенный индекс: payment_method in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php по линии 283

Примечание: неопределенный индекс: aiosp_edit in /home2/findmyki/public_html/bolistylus/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php по линии 1105

Примечание: неопределенный индекс: nonce-aioseop-edit in /home2/findmyki/public_html/bolistylus/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php по линии 1106

Примечание: неопределенная переменная: user_id в/home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 364

Примечание: неопределенная переменная: available_gateways в / home2 / findmyki / public_ylusp w / public_html /-content / plugins / jigoshop / classes / jigoshop_checkout.class.php в строке 379

ВАЖНО !!!!:

Неустранимая ошибка: вызов функции-члена process_payment() для необъекта в /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php в строке 379

Примечание: неопределенный индекс: aiosp_enabled в / home2/findmyki/public_html/bolistylus/wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php в строке 710

Примечание: неопределенный индекс: aiosp_enabled в / home2 / findmyki / public_ylushtml //wp-content/plugins/all-in-one-seo-pack/all_in_one_seo_pack.php в строке 710

Примечание: использование неопределенной константы PLUGIN_URL - предполагается, что PLUGIN_URL в / home2 / findmyki / public_html / bolistylus/ WP-Content / plugins / wp-google-fonts / google-fonts.php в строке 81

Примечание: использование неопределенной константы PLUGIN_PATH - предполагается, что PLUGIN_PATH в / home2 / findmyki / public_html / bolistylus / wp-content /plugins / wp-google-fonts / google-fonts.php в строке 82

Ответы [ 2 ]

1 голос
/ 05 января 2012
<input type="button" value="Submit" onClick="location.href='thankyou.php';">

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

Также вы всегда можете перенаправить действие формы на другую страницу, после чего эта страница перенаправит страницу с благодарностью после обработки.

Просто используйте заголовок ('Location:'); перенаправить.

1 голос
/ 04 января 2012

На вкладке ответа должен быть текст или строка json, но она пустая. Это может быть результатом ошибки php, которая скрыта, потому что настройки php на вашем сервере настроены на скрытие всех сообщений об ошибках, что хорошо.

Включите отладку, см. http://codex.wordpress.org/Editing_wp-config.php#Debug и повторите попытку. На вкладке ответа должен быть какой-то текст.

Обновление при включении отладки:

Что-то здесь не выглядит. Вы получаете эти ошибки при отправке запроса Ajax?

Глядя на эти ошибки, я вижу, что у вас есть фатальная ошибка, которая должна была остановить выполнение кода.

Fatal error: Call to a member function process_payment() on a non-object in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php on line 379

Вы изменили исходный файл jigoshop_checkout.class.php, поэтому мне сложно найти точные строки для этих ошибок. Но «Примечание: неопределенный индекс:» означает, что в этой строке есть переменная массива, индекс которой не равен ...

Метод 'process_payment', вызываемый один раз в этом файле

// Process Payment
$result = $available_gateways[$this->posted['payment_method']]->process_payment( $order_id );

$ available_gateways - массив с объектами разных способов оплаты. Но нет объекта для способа оплаты, определенного в $ this-> posts ['payment_method']

Кроме того, я вижу, что есть еще одно сообщение об ошибке, что переменная $ available_gateways не существует / не определена

Notice: Undefined variable: available_gateways in /home2/findmyki/public_html/bolistylus/wp-content/plugins/jigoshop/classes/jigoshop_checkout.class.php on line 379

Эта переменная может быть определена только тогда, когда jigoshop_cart :: needs_payment () возвращает true

if (jigoshop_cart::needs_payment()) :
        // Payment Method
        $available_gateways = jigoshop_payment_gateways::get_available_payment_gateways();
        if (!isset($available_gateways[$this->posted['payment_method']])) :
                jigoshop::add_error( __('Invalid payment method.','jigoshop') );
        else :
                // Payment Method Field Validation
                $available_gateways[$this->posted['payment_method']]->validate_fields();
        endif;
endif;
...