タグ: woocommerce

  • WoocommerceとContactform7を連携させてユーザー情報を自動入力させる

    Woocommerce会員がログインしている状態で、資料請求や、見積依頼等を行う場合、フォームに会員情報が自動で入力されている状態が好ましい。

    WoocommerceとContactform7を連携させてユーザー情報を自動入力させる方法を紹介したいと思う。

    今回自動入力させたい項目は以下。

    • 会社名*別途カスタマイズ
    • 電話番号
    • 郵便番号
    • 市区町村
    • 住所1
    • 住所2
    function wpcf7_form_tag_filter($tag){
        if(is_admin() || !is_array($tag)) return $tag;
        $name = $tag['name'];
        $user = wp_get_current_user();
        if($user) {
    		if($name == 'billing_company') { $tag['values'] = (array) $user->billing_company; }
    		if($name == 'billing_last_name') { $tag['values'] = (array) $user->billing_last_name; }
    		if($name == 'billing_first_name') { $tag['values'] = (array) $user->billing_first_name; }
    		if($name == 'billing_phone') { $tag['values'] = (array) $user->billing_phone; }
    $pref = array(
    		"JP01"=>"北海道", "JP02"=>"青森県", "JP03"=>"岩手県", "JP04"=>"宮城県", "JP05"=>"秋田県", "JP06"=>"山形県", "JP07"=>"福島県", "JP08"=>"茨城県", "JP09"=>"栃木県", "JP10"=>"群馬県", "JP11"=>"埼玉県", "JP12"=>"千葉県", "JP13"=>"東京都", "JP14"=>"神奈川県", "JP15"=>"新潟県", "JP16"=>"富山県", "JP17"=>"石川県", "JP18"=>"福井県", "JP19"=>"山梨県", "JP20"=>"長野県", "JP21"=>"岐阜県", "JP22"=>"静岡県", "JP23"=>"愛知県", "JP24"=>"三重県", "JP25"=>"滋賀県", "JP26"=>"京都府", "JP27"=>"大阪府", "JP28"=>"兵庫県", "JP29"=>"奈良県", "JP30"=>"和歌山県", "JP31"=>"鳥取県", "JP32"=>"島根県", "JP33"=>"岡山県", "JP34"=>"広島県", "JP35"=>"山口県", "JP36"=>"徳島県", "JP37"=>"香川県", "JP38"=>"愛媛県", "JP39"=>"高知県", "JP40"=>"福岡県", "JP41"=>"佐賀県", "JP42"=>"長崎県", "JP43"=>"熊本県", "JP44"=>"大分県", "JP45"=>"宮崎県", "JP46"=>"鹿児島県", "JP47"=>"沖縄県",
    		);
    		$getuserstate = $user->billing_state;
    		if($name == 'billing_state') { $tag['values'] = (array) $pref[$getuserstate]; }
    		if($name == 'billing_postcode') { $tag['values'] = (array) $user->billing_postcode; }
    		if($name == 'billing_city') { $tag['values'] = (array) $user->billing_city; }
    		if($name == 'billing_address_1') { $tag['values'] = (array) $user->billing_address_1; }
    		if($name == 'billing_address_2') { $tag['values'] = (array) $user->billing_address_2; }
        }
        return $tag;
    }
    add_filter('wpcf7_form_tag', 'wpcf7_form_tag_filter', 11);
    

    上記のポイントは「県」がコードで表示されてしまうのを防ぐため以下のコードを使用していることだ。

    $pref = array(
    		"JP01"=>"北海道", "JP02"=>"青森県", "JP03"=>"岩手県", "JP04"=>"宮城県", "JP05"=>"秋田県", "JP06"=>"山形県", "JP07"=>"福島県", "JP08"=>"茨城県", "JP09"=>"栃木県", "JP10"=>"群馬県", "JP11"=>"埼玉県", "JP12"=>"千葉県", "JP13"=>"東京都", "JP14"=>"神奈川県", "JP15"=>"新潟県", "JP16"=>"富山県", "JP17"=>"石川県", "JP18"=>"福井県", "JP19"=>"山梨県", "JP20"=>"長野県", "JP21"=>"岐阜県", "JP22"=>"静岡県", "JP23"=>"愛知県", "JP24"=>"三重県", "JP25"=>"滋賀県", "JP26"=>"京都府", "JP27"=>"大阪府", "JP28"=>"兵庫県", "JP29"=>"奈良県", "JP30"=>"和歌山県", "JP31"=>"鳥取県", "JP32"=>"島根県", "JP33"=>"岡山県", "JP34"=>"広島県", "JP35"=>"山口県", "JP36"=>"徳島県", "JP37"=>"香川県", "JP38"=>"愛媛県", "JP39"=>"高知県", "JP40"=>"福岡県", "JP41"=>"佐賀県", "JP42"=>"長崎県", "JP43"=>"熊本県", "JP44"=>"大分県", "JP45"=>"宮崎県", "JP46"=>"鹿児島県", "JP47"=>"沖縄県",
    		);
    		$getuserstate = $user->billing_state;

    参考記事

  • Woocommerceで国を削除するフィルターフック

    Woocommerceで国を削除する方法に関するメモ。

    Woocommerceは様々な国からの注文に対応しているため、標準で「国」を選べるような仕様になっているが、日本国内で使用する場合は、逆にこの設定が邪魔となる。

    ただ単純に見えないようにするならばCSSで非表示にしてしまうのも手だが、フィルターフックで非表示にする方法を以下に紹介する。

    Woocommerceで国を削除する方法

    add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
    add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' );
    add_filter( 'woocommerce_shipping_fields' , 'custom_override_shipping_fields' );
    function custom_override_checkout_fields( $fields ) {
      unset($fields['billing']['billing_country']);
      unset($fields['shipping']['shipping_country']);
      return $fields;
    }
    function custom_override_billing_fields( $fields ) {
      unset($fields['billing_country']);
      return $fields;
    }
    function custom_override_shipping_fields( $fields ) {
      unset($fields['shipping_country']);
      return $fields;
    }
    

    「国フィールド」は請求先や送付先にも表示されるため、上記のようなコードが必要になる。

  • Woocommerceで送信メールをプレビューで確認する方法

    How to preview Woocommerce mails. you can do that with plugin 「WooCommerce Email Test.」

    注文内容などが自動で挿入されたメールテンプレート利用して一部編集して送信。ということをフロントエンドで行いたい。というケース。

    1つのアイデアとして、プレビュー機能を使って、受注の内容を吐き出し、それをメーラーに貼り付けて送信。という、やや原始的な方法が一番汎用性が高いのではと思い、Woocommerceの送信メールをプレビューできるプラグインを幾つか試してみた。

    WooCommerce Email Test

    こちらはその名の通りこれから送るメールをブラウザでテストできるプラグイン。使い勝手が良いのだが、htmlバージョンのメールにしか対応していない。

    海外ではもはやhtmlメールが標準となっているのだろうか・・・・

    日本ではまだまだガラケーを含め、htmlに対応していないデバイスを完全に無視することはできない状況がある。以下の記事でも取り上げられているが、かなり複雑化している現実がある。

    http://webcas.azia.jp/email/knowhow/smartphone_mailmag.html

     

     

  • Woocommerceでメールのテンプレートを追加する方法

    Woocommerceには標準でメールテンプレートが10通用意されている。
    ※バージョンによって異なるため、要バージョン確認。

    Woocommerceのメールの特徴は、受注のステータスを変更したタイミングで発火し、自動で送信できるという点。
    ちなみに、標準のテンプレートで用意されているのは、注文時に管理者に送られる自動送信メールが1件、キャンセルのタイミングで管理者に送られるメールが1件、注文が失敗したタイミングで送信されるメールが1通。そして各タイミングで顧客に送られるメールが8通。

    メール機能を有効にチェックを入れなければ、送信のタイミングは自由に選ぶことができるため、基本、このデフォルトのメールテンプレートを修正すれば事足りるだろう。

    しかし、状況によっては新たなテンプレートをどうしても追加したいという場合がある。

    Woocommerceでプラグインを使わずにメールテンプレートを追加する方法

    こちらは以下英語のサイトだが詳しく解説されていたので参考にすると良い。

    https://www.skyverge.com/blog/how-to-add-a-custom-woocommerce-email/

    Woocommerceのメールテンプレートを追加できるプラグイン

    Woo Custom Emails

    上記のWP公式プラグインでWoocommerceにメールテンプレートを追加できる。

    ただし、発火のタイミングを選ぶことが必須となっているため、受注ステータスの変更時に送信するメール。というのが基本的な使い方だ。

    ※ステータスを両方同じステータスで指定すれば、自動発火を回避して使用することができるかも知れない。

  • Woocommerceでパスワードの強度を弱め、脆弱なパスワードを許可する方法

    Woocommerce2.5から追加されたチェックアウトページのThe password strength meter。

    脆弱なパスワードでのユーザー登録を許さない訳だが、7文字以上で記号を混在させてもうまく登録できない現象に陥った。

    どんなサービスを提供するかにもよるが、現時点で日本人が買物をする際に複雑すぎるパスワードの要求は、逆に機会損失に繋がると判断し、Woocommerceのパスワード強度を弱め、脆弱なパスワードを容認することとした。

    以下のコードをfunction.phpに追加すると、脆弱なパスワードでもユーザー登録が可能になる。

    [Googlead]

    Woocommerceで脆弱強度を弱め、脆弱なパスワードを許可するコード

    function ez_sparrow_remove_password_strength() {
    	if ( wp_script_is( 'wc-password-strength-meter', 'enqueued' ) ) {
    		wp_dequeue_script( 'wc-password-strength-meter' );
    	}
    }
    add_action( 'wp_print_scripts', 'ez_sparrow_remove_password_strength', 100 );