カート画面「発送・支払方法」ページにて、フィルターフックを活用して配送先の電話番号を任意記入にしたい場合

フォーラム 使い方全般 カート画面「発送・支払方法」ページにて、フィルターフックを活用して配送先の電話番号を任意記入にしたい場合

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #70849

    お世話になります。
    今回、カート画面の「配送・支払方法」ページにて、配送先の電話番号を必須項目から任意記入にしたいと思い質問いたしました。
    フィルターフックを活用して、以下のようにfunction.phpに記入してテストしました。

    /* ******************************************************** */
    /* 配送先の電話番号を任意記入にする *********************************/
    add_filter( ‘usces_filter_delivery_check’, ‘my_filter_delivery_check’ );
    function my_filter_delivery_check($mes){
    global $usces;
    $mes = ”;
    if ( isset($_POST[‘delivery’][‘delivery_flag’]) && $_POST[‘delivery’][‘delivery_flag’] == 1 ) {
    if ( WCUtils::is_blank($_POST[“delivery”][“name1”]) )
    $mes .= __(‘Name is not correct’, ‘usces’) . “<br />”;//20111116ysk 0000299
    // if ( trim($_POST[“delivery”][“name3”]) == “” && USCES_JP )
    // $mes .= __(‘Invalid CANNAT pretend.’, ‘usces’) . “<br />”;
    if ( WCUtils::is_blank($_POST[“delivery”][“zipcode”]) )
    $mes .= __(‘postal code is not correct’, ‘usces’) . “<br />”;
    if ( $_POST[“delivery”][“pref”] == __(‘– Select –‘, ‘usces’) )
    $mes .= __(‘enter the prefecture’, ‘usces’) . “<br />”;
    if ( WCUtils::is_blank($_POST[“delivery”][“address1”]) )
    $mes .= __(‘enter the city name’, ‘usces’) . “<br />”;
    if ( WCUtils::is_blank($_POST[“delivery”][“address2”]) )
    $mes .= __(‘enter house numbers’, ‘usces’) . “<br />”;
    // if ( WCUtils::is_blank($_POST[“delivery”][“tel”]) )
    // $mes .= __(‘enter phone numbers’, ‘usces’) . “<br />”;
    }
    if ( !isset($_POST[‘offer’][‘delivery_method’]) || (empty($_POST[‘offer’][‘delivery_method’]) && !WCUtils::is_zero($_POST[‘offer’][‘delivery_method’])) )
    $mes .= __(‘chose one from delivery method.’, ‘usces’) . “<br />”;
    if ( !isset($_POST[‘offer’][‘payment_name’]) ){
    $mes .= __(‘chose one from payment options.’, ‘usces’) . “<br />”;
    }else{
    $payments = $this->getPayments($_POST[‘offer’][‘payment_name’]);
    if(‘COD’ == $payments[‘settlement’]){
    $total_items_price = $this->get_total_price();
    $tax = $this->getTax( $total_items_price );
    $total_items_price = $total_items_price + $tax;
    $cod_limit_amount = ( isset($this->options[‘cod_limit_amount’]) && 0 < (int)$this->options[‘cod_limit_amount’] ) ? $this->options[‘cod_limit_amount’] : 0;
    if( 0 < $cod_limit_amount && $total_items_price > $cod_limit_amount )
    $mes .= sprintf(__(‘A total products amount of money surpasses the upper limit(%s) that I can purchase in C.O.D.’, ‘usces’), usces_crform($this->options[‘cod_limit_amount’], true, false, ‘return’)) . “<br />”;
    }
    }
    //20101119ysk start
    if(isset($_POST[‘offer’][‘delivery_method’]) and isset($_POST[‘offer’][‘payment_name’])) {
    $d_method_index = $this->get_delivery_method_index((int)$_POST[‘offer’][‘delivery_method’]);
    if($this->options[‘delivery_method’][$d_method_index][‘nocod’] == 1) {
    $payments = $this->getPayments($_POST[‘offer’][‘payment_name’]);
    if(‘COD’ == $payments[‘settlement’])
    $mes .= __(‘COD is not available.’, ‘usces’) . “<br />”;
    }
    }
    //20101119ysk end
    //20110317ysk start
    if(isset($_POST[‘offer’][‘delivery_method’])) {
    $d_method_index = $this->get_delivery_method_index((int)$_POST[‘offer’][‘delivery_method’]);
    $country = $_SESSION[‘usces_entry’][“delivery”][“country”];
    $local_country = usces_get_base_country();
    if($country == $local_country) {
    if($this->options[‘delivery_method’][$d_method_index][‘intl’] == 1) {
    $mes .= __(‘Delivery method is incorrect. Can not specify an international flight.’, ‘usces’) . “<br />”;
    }
    } else {
    if( WCUtils::is_zero($this->options[‘delivery_method’][$d_method_index][‘intl’]) ) {
    $mes .= __(‘Delivery method is incorrect. Specify the international flights.’, ‘usces’) . “<br />”;
    }
    }
    }
    //20110317ysk end

    return $mes;
    }

    しかし、「Fatal error: Using $this when not in object context in /~(自分のサイトのフォルダ)~/wp-content/themes/welcart_default/functions.php on line 222」というエラーがでてしまい、カート画面「内容確認」ページに行きません。
    ちなみに222行目は、
    「$payments = $this->getPayments($_POST[‘offer’][‘payment_name’]);」
    このようになっています。

    どうすればエラーが解決できるのか、どうかご教授いただければ幸いです。

    ——————————————-
    WordPress のバージョン:WordPress 3.9.1
    Welcart のバージョン:v1.4.2.1406022
    ご利用のテーマ: Welcart Default Theme
    症状を確認したブラウザ:
    サーバー(会社名、サービス名): ローカル環境
    SSLの利用: なし
    WordPress のパーマリンク設定:
    ——————————————–

    #70863
    nanbu
    キーマスター

    こんにちは。

    内容は検証していませんが、$this-> は全て $usces-> となります。

    #70878

    nanbu様

    ご回答ありがとうございます!
    「$this」の部分を「$usces」にしてテストしたところ、
    期待のとおり「内容確認」ページが表示されました!

    この度は、お返事誠にありがとうございました。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。