質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1208閲覧

【welcart】会員登録時・購入時のお客様情報から住所の必須を外したい

lily_night2121

総合スコア43

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/02/10 12:03

編集2023/02/11 03:41

やりたいこと

welcartで会員登録時・購入時のお客様情報から住所の必須を外したい。

やったことと質問内容

https://analyzegear.co.jp/blog/1207
上記の記事で任意項目を必須にする方法は見つかりました。
こちらを参考に、
usces_filter_member_check
usces_filter_customer_check
このフックを使用することで必須のコントロールをすることができそうなのですが、デフォで必須になっている項目(今回は住所)を任意にする方法がわかりませんでした。

プラグインファイルのclasses/usceshop.class.phpの中のfunction member_check()を参考に、とりあえず試しに郵便番号を任意にしようと思い、

php

1add_filter('usces_filter_member_check_fromcart', 'my_filter_customer_check', 10); 2add_filter('usces_filter_member_check', 'my_filter_customer_check', 10); 3function my_filter_customer_check() { 4 $zip_check = false; 5}

この内容でfunctions.phpに書いてみたところ、郵便番号以外も全て任意になってしまいました。

チェックがこの内容で上書きされるため、全て任意になってしまったと推測し、一旦前述のfunction member_check()の中身をそのままコピペしてみたところ、class内の記述のため$thisが使われており、そこの対処方法がわかりませんでした。

usceshop.class.phpを直接編集して該当項目を消す等をすれば対応できそうなのですが、できればプラグインファイルを直接触ることはしたくないため、フックで対応を進めたいです。

function member_check()の中身

php

1function member_check() { 2 do_action( 'usces_action_before_member_check' ); 3 4 $mes = ''; 5 $usces_member_old = $_SESSION['usces_member']; 6 foreach ( $_POST['member'] as $key => $vlue ) { 7 if( 'password1' !== $key && 'password2' !== $key ){ 8 $_SESSION['usces_member'][$key] = trim($vlue); 9 } 10 } 11 if( $_POST['member_regmode'] == 'newmemberform' || ($_POST['member_regmode'] === 'editmemberform' && !( WCUtils::is_blank($_POST['member']['password1']) && WCUtils::is_blank($_POST['member']['password2']))) ){ 12 $mes = $this->get_pwd_errors($_POST['member']['password1']); 13 } 14 15 if ( $_POST['member_regmode'] == 'editmemberform' ) { 16 if ( trim($_POST['member']['password1']) != trim($_POST['member']['password2']) ) { 17 $mes .= __('Password confirm does not match.', 'usces') . "<br />"; 18 } 19 if ( !is_email($_POST['member']['mailaddress1']) || WCUtils::is_blank($_POST['member']['mailaddress1']) ) { 20 $mes .= __('e-mail address is not correct', 'usces') . "<br />"; 21 } else { 22 $this->get_current_member(); 23 $mem_id = $this->current_member['id']; 24 $id = $this->check_member_email( $_POST['member']['mailaddress1'] ); 25 if( !empty( $id ) && $id != $mem_id ) { 26 $mes .= __( 'This e-mail address can not be registered.', 'usces' ) . "<br />"; 27 } 28 } 29 } else if ( $_POST['member_regmode'] == 'newmemberform' ){ 30 if ( trim($_POST['member']['password1']) != trim($_POST['member']['password2']) ) { 31 $mes .= __('Password confirm does not match.', 'usces') . "<br />"; 32 } 33 if ( !is_email($_POST['member']['mailaddress1']) || WCUtils::is_blank($_POST['member']['mailaddress1']) || WCUtils::is_blank($_POST['member']['mailaddress2']) || trim($_POST['member']['mailaddress1']) != trim($_POST['member']['mailaddress2']) ) { 34 $mes .= __('e-mail address is not correct', 'usces') . "<br />"; 35 } else { 36 $id = $this->check_member_email( $_POST['member']['mailaddress1'] ); 37 if( !empty( $id ) ) { 38 $mes .= __( 'This e-mail address can not be registered.', 'usces' ) . "<br />"; 39 } 40 } 41 }else{ 42 $mes .= __('ERROR: I was not able to complete collective operation', 'usces') . "<br />"; 43 } 44 if ( WCUtils::is_blank($_POST["member"]["name1"]) ){ 45 $mes .= __('Name is not correct', 'usces') . "<br />"; 46 } 47 $zip_check = false; 48 $addressform = $this->options['system']['addressform']; 49 $applyform = usces_get_apply_addressform($addressform); 50 if ( $applyform === "JP") { 51 if ( isset( $_POST["member"]["country"] ) ) { 52 if ( $_POST["member"]["country"] === "JP") { 53 $zip_check = true; 54 } 55 } else { 56 $base = usces_get_base_country(); 57 if ( $base === "JP") { 58 $zip_check = true; 59 } 60 } 61 } 62 $zip_check = apply_filters( 'usces_filter_zipcode_check', $zip_check ); 63 if ( WCUtils::is_blank($_POST["member"]["zipcode"]) ) { 64 if ( usces_is_required_field('zipcode') ) { 65 $mes .= __('postal code is not correct', 'usces') . "<br />"; 66 } 67 } else { 68 if ( $zip_check ) { 69 if (!preg_match("/^[a-zA-Z0-9]+$/", $_POST["member"]["zipcode"] ) ) { 70 $_SESSION['usces_member']["zipcode"] = usces_convert_zipcode($_POST["member"]["zipcode"]); 71 } 72 if (!preg_match('/^(([0-9]{3}-[0-9]{4})|([0-9]{7}))$/', $_SESSION['usces_member']["zipcode"])) { 73 $mes .= __('postal code is not correct', 'usces') . "<br />"; 74 } 75 } 76 } 77 if ( $_POST["member"]["pref"] == __('-- Select --', 'usces_dual') && usces_is_required_field('states') ){ 78 $mes .= __('enter the prefecture', 'usces') . "<br />"; 79 } 80 if ( WCUtils::is_blank($_POST["member"]["address1"]) && usces_is_required_field('address1') ){ 81 $mes .= __('enter the city name', 'usces') . "<br />"; 82 } 83 if ( WCUtils::is_blank($_POST["member"]["address2"]) && usces_is_required_field('address2') ){ 84 $mes .= __('enter house numbers', 'usces') . "<br />"; 85 } 86 if ( WCUtils::is_blank($_POST["member"]["tel"]) && usces_is_required_field('tel') ){ 87 $mes .= __('enter phone numbers', 'usces') . "<br />"; 88 } 89 if( !WCUtils::is_blank($_POST['member']["tel"]) && preg_match("/[^\d\-+]/", trim($_POST["member"]["tel"])) && usces_is_required_field('tel') ){ 90 $mes .= __('Please input a phone number with a half size number.', 'usces') . "<br />"; 91 } 92 93 if( $_POST['member_regmode'] !== 'editmemberform' && isset( $this->options['agree_member']) && 'activate' === $this->options['agree_member'] ){ 94 if( !isset($_POST['agree_member_check']) ){ 95 $mes .= __('Please accept the membership agreement.', 'usces') . "<br />"; 96 } 97 } 98 99 $mes = apply_filters('usces_filter_member_check', $mes); 100 101 if ( $_POST['member_regmode'] == 'editmemberform' && '' != $mes ) { 102 $_SESSION['usces_member'] = $usces_member_old; 103 } 104 105 return $mes; 106 }

バージョン情報

  • PHP 7.4
  • WordPress 6.1.1
  • Welcart e-Commerce 2.8.11
  • 使用テーマ:EGO for Welcart(バージョン: 1.7)

2/11追記

丸投げになってしまっていたため、質問内容を変更しました。
必須さえ外れれば後は項目を消すだけになるので、必須の外し方をご教授いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lily_night2121

2023/02/11 03:36 編集

丸投げだったため質問内容を変更しました。 $thisをclass外でどう書けばいいかわかれば解決しそうなのですが、いかがでしょうか?
guest

回答2

0

ベストアンサー

一旦前述のfunction member_check()の中身をそのままコピペしてみたところ、
class内の記述のため$thisが使われており、そこの対処方法がわかりませんでした。

上記 member_check() 内の先頭で global $usces; を記述していただいて、
$this の部分は $usces で置き換えていただければ対応できるかと思います。

カスタマイズした関数では 99 行目のフィルター呼び出し部も削除しないと、
無限ループになってしまいますのでお気を付けください。

投稿2023/02/12 16:00

go_hirogeru

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lily_night2121

2023/02/13 08:16

ありがとうございます! 無事任意にすることができました!
guest

0

本来であれば,画像の特徴に基づいて確率を出してほしいのに全てclsの値に依存したような結果が出力されてしまうので疑問に思いました vidmate.

投稿2023/02/10 18:33

Jadke09

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問