お久しぶりです、コーダーのKです。

見積もりフォームを作って欲しい! という要望があったので表題の

Calculated Fields Formをご紹介しようかと。

 

まず、翻訳されてないので全て英語! アルファベット恐怖症の人には辛いですが、簡単な英語なのでさして問題にもならないでしょう。

 

基本無料のプラグインですが、無償版ではフォームの入力内容をメールできないなど一番大事な部分が使えないんですよね。

価格帯はこんな感じ・・・プロフェッショナル版で十分でしょうし、おおよそ5,500円と言ったところですね。

 

今回は使い方と言うことで説明させてもらいましょう。

 

インストールするとダッシュボードのサイドバーにCalculated Fields Formが出てくるのでそこから調整する。

 

■管理画面トップ

 

初期段階のサンプルいくつも用意されるなどかなり親切。

下部の細かい設定は今回割愛、特に設定しなくても動きます。

 

■モジュール設置

上部記載の画像にある「Setting」を押すと設定画面が開きます。

左側のパーツをクリックすると、右側にそのパーツが設置されます。

右側に入っているパーツはドラッグアンドドロップで移動可能です。

 

■詳細設定

上図は数値入力させる場合の一例。

その他にはドロップダウンリストやチェックボックスなど必要なものが一通り揃ってます。

 

■フォームの設定

Form Name:フォームの上部にタイトルを出す

Label Placement:ラベルの位置。leftを選ぶとinputに対して左側に出る。

Enable autocompletion:自動補完のこと

Enable the browser's persistence:ブラウザにデータを保存するらしい。通常使わない

 

・Eval dynamically the equations associated to the calculated fields

計算を動的に行うかどうか? の設定。必ずチェックを入れておくこと。

赤枠は計算のタイミングのこと。

デフォルトでは「keyup」つまり入力キーを叩いて離した瞬間。逆にonchangeにすると、入力した内容が確定したあと、となる。

 

■レイアウト用

赤枠のFileldsetとDivを選べる。

・Fieldset

fieldsetとして設定され、labelに入力したところはlegendタグで設置される。

カラムを割ることもでき、丁寧な作り込みと仕事に感動を覚えた。

Divも同じような設定ができ、細かいレイアウトを引ける。

 

■計算フィールド

 

肝心要、ここで入力された値を集計します。

例は施設利用人数の集計です。

「filedname3」で「大人(中学生以上)」に入力された値を参照します。

今回は1人あたり400円なので「fieldname3*400」としています。

同様に他の入力を拾って、「+」することで合計値を算出します。

複雑な計算も可能なのでいろいろ試してみるといいだろう。

 

ちなみにIFの使い方は以下

IF(条件式,正の返り値,負の返り値)

となる。

子供が3人以上で一人無料とする場合

IF(fieldname7>=3,fieldname7*200-200,fieldname7*200)

とすれば計算される。

 

■条件分岐

次に「If value is」を説明する。

この計算フィールドに入力された数値結果によって、別のモジュールの表示非表示が制御できる。

less thanやgreater thanなど条件式で判定できるので、細かい設定が可能だ。

 

入力値が1000円以上だった場合に表示したい場合は

greater than equal toを選んで、値に1000を設定

その後、If rule is valid showで表示するfieldを選択すればいい。

 

■javascriptの計算式もできる

(function(){

//ここに式を書ける
})();

上記の様にfunctionでくくるとjavascriptでの計算が可能となる。

例えば

(function(){

let p = 300; //大人料金

let cp = 200; //子供料金

let bp = 100; //幼児料金
if(fieldname7 >= 3){
  return fieldname3*p+(fieldname7-1)*cp+fieldname8*bp;
}else{

  return fieldname3*p+fieldname7-1*cp+fieldname8*bp;

}
})();

と書くことができる。

これを利用すればチェックボックスやドロップダウンリストなどを利用した器用な分岐も書ける。

 

かなり難しい部分もありますが、実装すると顧客に喜ばれることもあるので頑張る価値はあるかなと

 

 

今更ではあるが、酒類を扱うサイトを作る場合の注意事項をまとめてみた。

 

1.未成年者への注意喚起

「当店では未成年者への酒類販売はいたしません」とサイトに明記が必要

または「未成年者の飲酒は法律で禁止されています」とする。

 

フォントは明瞭かつ、商品価格より大きなサイズにしなければならない。

 

2.年齢確認

ショップサイトとなるが、購入画面において20歳以上であることを確認する必要性がある。

これまでは「20歳以上です」とチェックボックスなどで注意喚起していたが、それでは不十分とのこと。「年齢」の入力でもいいが、できれば「生年月日」を記入させるほうがいい。

もちろんプライバシーポリシーの記載も忘れずに行う必要性がある。

 

※ポップアップやモーダルウィンドウによる年齢確認について

サイト訪問時に表示される年齢確認ウィンドウ等であるが、これの設置も考えものとなる。

出すだけならいいが、初回のみに限定しないと閲覧のたびに出てきてしまう。

クッキーを利用するなどで限定はできるが、クッキーを利用していることを明記する必要が出る場合が高い。さらにクッキーの組み込みにも労力が割かれてしまう。

また、初回のみの注意喚起では不十分とされている。

よってこれらの実装は避けたほうがいいだろう。

 

3.特定商法取引法に基づく表記

オンラインショップには必須のもの。運営者などの情報表記や販売形態、支払い方法、返品などに関してはまとめたもの。

この辺りはまた別の機会にまとめようと思う。

 

と、まあ多くはオンラインショッピング関連になるのだが、酒屋さんなどのホームページにも記載が必要な場合もあるとは思う。

また、上記の他に下記もあった方がより配慮のあるサイト言えるのではないだろうか?

 

・飲酒運転は法律で禁止されています。

・妊娠中や授乳期の飲酒は、胎児・乳児の発育に悪影響を及ぼすおそれがあります。

 

以上である。

 

 

ども、コーダーのKです。カッパーと読みます、、、嘘です

 

風邪、治リマセン・・・デモ仕事アリマス・・・アリガタイデス、、、ハナミズズビズバー

 

と言っていても仕方ないので、、、さて、前々回あたりで「ショートコードがー」って話はしたかと思いますが・・・

今回はもう少し踏み込んでみましょう。

 

変数、いっちゃいます?

 

というわけで、ショートコードで送ったテキストをh3タグに囲んで見出しにしたい! を実現してみましょう。

ソースは以下で・・・

add_shortcode( myh3, my_h3 );
function my_h3($attr){
    var_dump($attr);
    extract(shortcode_atts(array(
        'text' => 'no title!'
    ),$attr));
    return '<h3>'.$text.'</h3>';
}

これで[myh3]を設定すると実行結果としてh3タグに囲われた「no title!」が表示されます。

[myh3 text="テストタイトル"]とすると、h3タグに囲われた「テストタイトル」が表示されます。

 

細かく分解していきましょう。

 

まず、ショートコードにtext="テストタイトル"を設定すると、textをキー、テストタイトルをvalueにした配列が送られる。

それをextract関数を利用して$text='テストタイトル'にしてもらっているというわけです。

あとはそれを<h3>で囲むようにしてreturnしているのです。間違ってもechoはしないようにようにーようにぃぃぃ

 

ここで問題になるのがshortcode_attsかな? これはショートコードで変数を扱いたいときの定型文と言っていいだろう。

Wordpressの説明読んでも、うんわからん! になってしまった。

概要としてはショートコードで送られてきた配列に対し、紐付ける形で初期値を設定できる! とのことらしい。

ほぉ、へぇ・・・であるが、まあ、これを設定すると、[myh3]だけのショートコードには初期値として「no title!」が$textに代入される、である。

 

まあ、実際にはこんな使い方しませんが・・・とりあえずショートコードで変数を扱うには、ワンクッション必要ということで。

 

ではではー

コーダーのKです。

 

年始からひどい風邪を引いて、寝込んでおりました。

原因は多分、年末に壊れた自宅PCの改修作業のせいだろうと・・・

静電気怖ーってことで、暖房もなしで作業したのがまずかったようです。

されどPCないと仕事にならないんですよね、この仕事。

 

結局、マザーボード(PCの基盤ですね)の故障だとわかった次第です。

6年使えば御の字でしょうが、そうなると代わりが手に入らないんですよね。

新品はほぼ入手不能、中古でもジャンク扱いがほとんどという状況で、仕事に使うPC作るわけにもいかず、結局CPUから新調する羽目になりました。

 

さて、それは置くとして……年は取りたくないものですね。風邪が治らない。

おかげで仕事してるようなしてないような状況で年始を迎えております。

 

とりあえず、本年も頑張りますー

どうも、コーダーのKです。

 

今日はWelcartというプラグインを紹介。

Welcartは日本人が開発してくれたありがたいカートシステムです。

カスタマイズも色々できて、小規模から中規模のショップを手軽にWordpressに追加できます。

 

仕事にあまり関係しないんですが、最近触る機会が続いたので何か残しておこうかと;

まあ、依頼されたのがですね・・・誰かが作ったテンプレートの改造だったりするわけです。

 

依頼内容なんですが、まあ簡単な話でした。

 

通常価格と販売価格が出ていて、それぞれ同じ値段だからどっちか要らないのでは?

言われてみればそうかもしれませんね。で、中身を見てみる。

 

通常価格を表示しているところは「usces_the_itemCpriceCr()」関数で制御されている。

販売価格はと・・・「usces_the_itemPriceCr()」かな?

 

ふむふむ・・・ああ、じゃあこの関数で取得している値で条件分岐付けれるかな?

if( usces_the_itemCprice() != usces_the_itemPrice() ){

}

こでいいか・・・と思ったんですが、いかんいかん、return忘れてた。

if( usces_the_itemCprice('return') != usces_the_itemPrice('return') ){
	echo '通常価格:'.usces_the_itemCpriceCr().'→ 販売価格'.usces_the_itemPriceCr();
}else{
	echo '販売価格:'.usces_the_itemPriceCr();
}

通常価格と販売価格が違う場合のみ 1000 → 800 と出てくる。

あとはCSSでline-through設定するなりすればよい。

 

Welcartのいいところは、上記みたいに柔軟なカスタマイズができるように、商品情報を引き出して利用できるところですね。

 

? 割引率も出せ ?

 

・・・気が向いたら書きます、ハイ・・・