ContactForm7とkintoneを連携していみる

ワードプレスの問い合わせフォームとしてコンタクトフォーム7が定番ですが、これをkintoneと連携してみたいと思います。

 

■初期準備手順

・contactform7プラグインをインストールする

・「Form data to kintone」プラグインをインストールする

 

・kintoneにユーザー登録をする

https://kintone.cybozu.co.jp/」無償お試しがあるのでそれで行ってみます。

 

すでに登録があったらしくサイボウズストアからパスワードリセットをして、お試しでkintoを選んでみました。

 

 

 

■kintoneで問い合わせフォームのアプリを作る

・「設定」>「アプリ管理」>「アプリを作成する」をクリックする

・「はじめから作成」をクリックする

 

・ペタペタとパーツを入れてフォームを作る

 

・「フィールド名」と「フィールドコード」を設定する

 

・「設定」タブ>「APIトークン」をクリックする

APIトークンを生成する。レコード閲覧とレコード追加のアクセス権を付与した

 

・URLのところに「app=XX」と数字があるのでこの数字がAPP IDになるので記録しておく。

 

■WordPressのコンタクトフォームでkintoneの設定をする

・コンタクトフォームのkintoneのタブを開く

・下記の設定を行い、「GET」ボタンを押す。

kintoneのドメイン:取得した時のドメイン名

kintone へ登録エラーを送信するメールアドレス:エラーを送信するアドレス

APP ID:URLで「app=XX」となっていた数字

API TOKEN:作成したAPIトークン

 

 

 

・コンタクトフォームのフィールドとkintoneのアプリのフィールドを一致させ、保存する

 

あとはフォームを設定してテスト。

成功すればkintoneのアプリにデータが格納される。

 

■その他

・添付ファイルについて

「Form data to kintone」プラグインでは、Add onとなっているが今とのころ未定っぽい。

以前はフォームクリエイターというのが別サービスであっただのが今は終わってしまい「フォーム」ブリッジというのを利用するとkintoneのフォームを一般公開できるみたい。

あとは、自作するしかないっぽいな…

 

・ルックアップフィールドは登録、更新ができない。

そのような仕様とのこと。

https://developer.cybozu.io/hc/ja/articles/201941754#step12

 

 

welcartで見積書、請求書、納品書、領収書に印鑑のイメージやロゴを入れたい

welcartで見積書、請求書、納品書、領収書に印鑑のイメージやロゴを入れたい場合のメモです。

 

結論からするとfunctionでfilterを追加することになります。

 

・function.phpに追記

function my_filter_pdf_sign() {
	return get_template_directory() . '/画像ファイル.jpg';
}
add_filter( 'usces_filter_pdf_estimate_sign', 'my_filter_pdf_sign' );//見積書
add_filter( 'usces_filter_pdf_invoice_sign', 'my_filter_pdf_sign' );//納品書
add_filter( 'usces_filter_pdf_receipt_sign', 'my_filter_pdf_sign' );//領収書
add_filter( 'usces_filter_pdf_bill_sign', 'my_filter_pdf_sign' );//請求書

 

・サイズや位置を指定する場合(横の位置、縦の位置、画像の幅、画像の高さ)

function my_filter_pdf_sign_data() {
	return array(110, 50, 50, 50);
}

 

うーん。複数は設定できなさそうなので、どっちか1つですかね。。

 

welcartでpaypalエクスプレスチェックアウトの決済を設定してみる

WordPressのショッピングサイトツールのWelcartでPaypalエクスプレスチェックアウトの決済を設定してみたいと思います。

※Paypalアカウントが登録されていることが前提。

 

■本番用のAPI情報を取得する

・PayPalのサイトにアクセスします

・右側の設定アイコンから「アカウント設定」をクリックします。

 

・APIアクセスの更新をクリックします。

 

 

・「NVP/SOAP APIの実装(旧バージョン)」の「API認証情報の管理」をクリックします。

 

・APIの情報が表示されます。

この内容は本番用として、何かにメモとして保存しておきます。

 

■ウェブペイメントの設定

ウェブペイメント設定ページを開きます。

https://www.paypal.com/businessmanage/preferences/website

 

自動復帰の設定

顧客がペイパルで決済を完了した際、ペイパルの決済画面から自動的にECサイトに戻るよう設定を行います。とのこと。

↓自動復帰の説明(Paypal)

https://www.paypal.com/jp/webapps/mpp/developer/paypal-button/checkout-setting

・自動復帰のURL(?acting=paypal_wpp&acting_return=1を付けるとのこと)詳しくはこちら

https://ECサイトURL?acting=paypal_wpp&acting_return=1

 

PayPalアカウントオプションサービス

「オン」にする。アカウントが無い人でも支払いできるようにするためのオプション

 

 

■テスト用アカウントの準備

Sandbox test accountsは下記のURLから。

https://developer.paypal.com/developer/accounts/

 

アカウントが無い場合は「Create Account」から作成する。TypeがBusinessは販売、Personalは買う人

「Manage accounts」欄からAPIに必要な情報を記録する。あとメールアドレスも。

 

 

 

■Welcartの設定手順

・WordPressの管理画面で「Welcart Shop」>「クレジット決済設定」をクリックします。

・利用できるクレジット決済モジュール欄から「Paypalエクスプレスチェックアウト」を右側の「利用中のクレジット決済モジュール」に移動させて「利用するモジュールを更新する」をクリックします。

 

・そうすると「Paypal(EC)」タブが表示されます。

 

 

・上記の作業で本番用とテスト用のAPIを取得しているので利用する用途に合わせて入力します。

 

※最初はテストで動作させて動くか確認します。

 

・「Welcart Shop」>「基本設定」で支払い方法にPaypalを追加する。

 

 

■動作確認

実際に適当な商品をカートに入れて決済に移動します。Paypalで支払うと表示されたら、テスト用のアカウントでログインして決済します。

 

正しくできていればよいのですがエラーメッセージが表示された場合は、「Welcart Management」ページを開き、上部に「決済エラーログ」の文章が表示されているのでそこでエラーを確認できます。

 

一度できてしまえばそんなもんというところですがPaypalの設定は、マニュアルと実際の画面が異なったり、新旧の情報が散乱しているので、ほかと比べて面倒くさいと感じてしまいます。

 

こんなところです。

welcartで商品一括登録を行ってみるって言いながらもその他もろもろ

WordPressのショッピングカートのwelcartの商品一括登録を行ってみました。

その時のメモを残しておきます。

 

※Welcartの商品一括のマニュアルはこちら

 

 

商品一括登録手順

・メニューの「Welcart Shop」>「商品マスター」をクリックする。

・「操作フィールド表示」をクリックする

 

・そうすると右側に「商品一括登録」「商品データ出力」が表示される

 

・商品インポートの元ファイルは、マニュアルサイトにサンプルのエクセルがあるのでそちらをベースに用意します。

SKU展開するしない等あるので、実際に一括取込する前にテストサイトで試すのが良いです。

※注意:1.9.31で試したところインポートはCSVのみ。1行目にヘッダーは必須

 

元のファイル(Excelで開いたところ)

 

インポートした画面

 

 

■インポートをやってみてわかったこと

存在しないカテゴリを指定した時は、何も選択もカテゴリの追加もされない。

カテゴリは、スラッグ指定ではうまくいかなかった。IDは問題なし

 

取込のCSVのPost IDが空欄だと新規登録となり、商品コードがすでに登録されていると登録がスキップされる

⇒既存の商品を更新したい場合はPost IDを指定する

 

 

商品をゴミ箱に捨てた場合は、「検索項目」>「表示状態」>「ゴミ箱」とすることで表示される

 

Advanced Custom Fields PROを利用することができない!??

Advanced Custom Fields PRO を Welcart で使えるようにするためのパッチが出ているようです。

そのまま、カスタムフィールドを利用した場合は商品にフィールドは追加されませんでした。

商品のpost_typeが「post」なのできつめの設定で行う場合は、投稿にも影響するので注意が必要

カテゴリを商品で指定すれば何とかなるのかな。

インポートする際にもカスタムフィールド列に「カスタムフィールド名=値」で登録できた。

 

リピート項目の場合にはちょっとした注意事項が必要だった。

イメージをつかむためには、一度、リピート項目に値を追加し、商品のデータをダウンロードし、カスタムフィールド列を見てみるのが良い。

 

下記のようにカスタムフィールドを作ってみた。

 

では、どのように商品インポート時にカスタムフィールドを設定すればよいのかというと

 

1.フィールドラベル(繰り返しフィールド)のフィールド名で、何件追加するのか指定する。2行の場合は「itemrepeat=2」となる。

2.サブフィールドのフィールド名を指定する

・サイズの場合

1行目に入れる値:itemrepeat_0_size=1234

2行目に入れる値:itemrepeat_1_size=576

 

まとめると、2件のデータで上記のサイズを入れる場合は

itemrepeat=2;itemrepeat_0_size=1234;itemrepeat_1_size=576

となる。

また、指定されていないフィールドは上書きされないので空欄などにしたい場合は空欄で指定が必要

 

 

WordPressのwelcartの商品インポートについてはこんなところでしょうか…

simple post order wordpress plugin で並び順が変わらなくなった

カスタム投稿の並び順を手動で変更するために「simple post order 」プラグインを利用していた。

いつかしら、並びを変えることができなくなった。

 

■作業の経過を追ってみた

1.記事をWP All Importでインポート

2.simple post orderで並び替え

3.記事をWP All Importでインポートで更新

4.WP-PostViewsを入れた

5.Disable Commentsを入れた

6.simple post orderで並び替えがで動作しない(現在ここ)

 

■動作するようになった方法

「simple post order」の並び順をリセットした

 

■原因として考えるに…

WP ALL Importで何度か記事を更新したことに原因が???

 

っていう推測な領域。

 

とりあえず、リセットしたら治ったのでもう一度設定。

 

WordPressのJetPackでcURL error 60: SSL certificate problemで承認できない件

WordPressのJetPackプラグインを入れ、連携承認しようとしたところ「cURL error 60: SSL certificate problem」で承認できない。

 

っちょっと調べてみたところ

 

原因は

SSL証明書にあるみたい

 

っていうことがわかった。

 

SSL SERVER TESTで証明書をチェックしてみたところ…

 

中間証明書のところで「USERTrust RSA Certification Authority」が「 期限切れ」ってなっていた。

 

証明書発行元に確認したところ変更があったらしく、中間証明書を新しくダウンロードして導入してくださいということなので

早速行ったところ無事jetpackの承認ができ、動作できるようになりました。

 

もうちっとエラーメッセージほしいところだよな。

 

 

 

カスタム投稿(ACF)のWP REST APIで更新する方法

WordPressのカスタム投稿プラグイン(Advanced Custom Fields:略ACF)を利用したサイトを構築したときにWP REST APIで値を更新する方法をメモしておきます。

 

■必要なもの

・ACF to REST APIプラグイン(https://ja.wordpress.org/plugins/acf-to-rest-api/

※ACFはインストール済みとします。あと、WP REST APIの認証部分も省略します。

 

■設定すること

function.phpに下記の2行を入れてREST APIの時の設定を表示させます。

	// Enable the option show in rest
	add_filter( 'acf/rest_api/field_settings/show_in_rest', '__return_true' );

	// Enable the option edit in rest
	add_filter( 'acf/rest_api/field_settings/edit_in_rest', '__return_true' );

 

そうするとカスタムフィールド設定に下記の2つの設定ボタンを表示されます。見ての通りなので、両方とも「はい」にします。

 

■どうやって値を入れるのか?

まず、このページを読まないと進みません。

 

エンドポイントとして

投稿の場合は下記のようなものが用意されています。

/wp-json/acf/v3/posts/{id}
/wp-json/acf/v3/posts/{id}/{field-name}

 

更新するにあたっては「fields[‘カスタムフィールドで指定した名前’]」にすれば更新できます。

え?更新?更新しかないようで、新規に値を入れることはできないようです。

 

API流れとして、

・ページ(記事)を作成する

・カスタムフィールドの値を更新する

となります。

 

じゃあ、リピートフィールドは?ACFの中で便利な機能です。

 

下記のような形で更新できます。

                    "fields[repeattext]":[
                        {
                            "itemname":"1234",
                        },
                        {
                            "itemname":"あいうえお",
                        }
                    ],

 

えーそうなんですよ、更新なので記述が無いものは削除されます。

 

なんか履歴を追加していきたい!!って思った場合は全件取得して全件ぶっこむようになるのでしょう。。。

 

 

今回は、商品に対して、価格の履歴をACFのリピートフィールドで入れたいなって思っていたのでどうしようかな…

 

 

2021/12/29追記

□ACFの値を登録する方法

公式サイトの記事(https://www.advancedcustomfields.com/resources/wp-rest-api-integration/)によると「Advanced Custom Fields Pro」のversion5.11以降ならこのプラグインだけで値の登録等ができるとのこと。

 

さっそくやってみた。「ACF toREST API」は無効化。代わりに「Advanced Custom Fields Pro」を有効化。

 

今回やりたかったのがユーザーにカスタムフィールドを追加してそこに値を入れたかったのでそのようなものを作ってみた

カスタムフィールドを作り、設定欄のアクティブとShow in REST APIをはいにする

 

「Show in REST API」を「はい」にしないとその項目は登録できないみたいなので注意が必要。

 

項目の指定方法は

"acf": {
	"bikou": "テスト",
}

ACFの配下にフィールド名と値を記述する

 

これでAPIで項目の格納が可能になった。

 

 

ホームページの表示速度を早くしたい!

ホームページの表示速度を早くしたい!っていう相談が多々きますのでちょっとざっくりとホームページの表示速度ってなんなのかまとめていきたいと思います。

 

 

ホームページの表示測度にかかわる要因

 

・サーバーの性能

・コンテンツのデータ転送量

 

が主な要因になります。

 

サーバーの性能とは(っていうより処理能力?)

基本的にはハードウェア回りのCPU、メモリ、HDD or SSD、ネットワーク回線が主に影響します。

最近のパソコン選びと同じでCPUはそこそこ、メモリは8GB以上、SSDは必須、バックボーンのネットワークは高速が良いです。

 

さらに、サーバーの性能に含まれてしまう?ケースが多いのが

・WEBサーバーの種類(Apacheやnginx)。現状は、一般的にはngixの方が速いです。

・WordPressを利用しているとPHP5とPHP7の違い

あたりが一般的ななのかもしれません。

 

これ以外にも単なるOSの環境が単なるLAMP環境よりも高速にチューニングされたkusanagiを利用したほうが断然速いです。

 

ここでいう速いは、Apache BENCHを利用した結果に影響する部分になります。

 

コンテンツのデータ転送量

この部分がちょっと厄介ですね。日々更新してデータが増えていくので絶対というのは無いですが工夫しないといけないです。

・画像サイズ調整、圧縮

・ScriptやCSS系の圧縮の利用

 

このあたりは、「Google PageSpeed Insights」や「GTmetrix」でチェックしていけばよいかと思います。そうすると対処する箇所を指摘してくれるので。

 

これらを総合してのホームページ表示測度となります。

 

例えば1秒台でホームページを表示したい!って思たら、「サーバーだけ強化すればよい」っていうことはありません。

サーバーとコンテンツの両方を調整して、1秒台になります。また、サーバーに関しては同時アクセスや月間PVがどのくらいなのかによってもスペック調整が必要です。

 

ちょっと、空いていたサーバーにkusanagiをインストールして速度を図ってみました。

VPSサーバー:メモリ2GB、CPU3コア

GTmetrixだとページ表示までに1.5秒とのこと。まあ、スペックからしてまあよいではないかと思います。(WordPressの初期テンプレ)

 

じゃあ、サーバーとしての処理能力をは?

apache BENCHで

ab -n 1000 -c 100 http://対象ドメイン/

とした場合

・1秒で処理できるリクエスト

Requests per second: 113.53 [#/sec] (mean) PHP7

1秒なので1か月を秒数(2,592,000秒)に直して計算すると 292,896,000 PV/月。

えーと、2億いくんですか…初期のWordPressってなんもないからな…大したクエリもないので…

 

・bcacheをオンにした場合

Requests per second: 1412.66 [#/sec] (mean)

はあ。。。も、いっか。

 

初期テンプレでやっていると現実的じゃないな…

 

実際のサイトで試したところ、結構なばらつき。(WordPressサイト)

・エックスサーバーで運用しているサイト(なんか、ばらつき大きいな。PHP5と7の違いも大きい)

Requests per second: 5.61 [#/sec] (mean) PHP5

Requests per second: 22.70 [#/sec] (mean) PHP7

Requests per second: 63.22 [#/sec] (mean) PHP7

 

・お名前.comで2019年のリリースされたサーバー(PHP7で動作)

Requests per second: 86.29 [#/sec] (mean) PHP7

 

・過去のwpxのサーバー(今は後継がある)

Requests per second: 74.87 [#/sec] (mean) PHP7

 

すべて、ばらばらなコンテンツが載っているので正確なものではないです。また、共用なので負荷かけるのはまずいので回数等減らしているのであいまいな数字です。

サーバが速くても掲載するコンテンツや作りによって上記のように処理できる量が変わります。

 

高速だったのに、あれもこれも表示してって追加していったら、処理能力が1/3に落ちたとか結構あります。

あっちからこっちからデータをぐりぐりして持ってくるようなホームページに仕上がったら処理能力が落ちてると思ったほうが良いですね。

 

キャッシュ系は、処理能力をアップする上で便利ですが、キャッシュなのでドツボにハマるときもあります。

kusanagiの「キャッシュ除外URL」がなぜか反応しないケースが…

httpsをプラグインを入れてやっているので除外URLに

http://~とhttps://~を記述してみた。

http://~/passwordreset/[\w!?/\+\-_~=;.,*&@#$%\(\)\’\[\]]+

 

とか?簡単そうでなんだかな…

キャッシュ除外URLに空行入れていたら、キャッシュ全て有効になってなかった

正規表現を利用して「/?」が入っているページのキャッシュが除外できないような。

POSTとGETどっちも除外になるのかな?

⇒結局kusanagiのキャッシュは、良いのだが、いうこと聞かないケースが多いので外してみることにした

 

 

 

 

セキュリティだけじゃなくて、処理能力の面からみてもPHP5は、早くやめてPHP7に変えたほうが良いって結果になりました。

 

 

 

 

WordPressの「WP OAuth Server」を使ってみる

WordPressの「WP OAuth Server」を使ってみました。

よくわからないのでちょっとずつ情報をアップしていこうと思います。

 

WP OAuth Serverって何?認証に使います。OAuth2が利用できます。

https://wp-oauth.com/

 

設定ってどうするの?

 

Configuring Global Settings

Once the plugin is installed, go to OAuth Server -> Settings to access the global settings. There are two tabs for settings.

  1. General
  2. Advanced

The global settings are set to a default state which works for most installs out of the box. Go to the General Settings tab and ensure that “OAuth Server Enabled” is checked.

 

えーと、管理画面に「OAuth Server」→「Setting」があるから一般とアドバンスの設定をしろよと。

「OAuth Server Enabled」にチェックが入っていると使えるとのこと。

 

で、アドバンスを見ると

 

マニュアルはこちら
https://wp-oauth.com/docs/general/grant-types/

 

無料版だと「Authorization Code」だけ利用できるみたいです。

さてどうするの?

 

「client」からアプリを登録します。

ここでは、同じドメイン配下で別フォルダにクライアントアプリを用意しました。

 

で、認証とかどーするの?

やり方はこのページを読めと「https://wp-oauth.com/docs/general/grant-types/

で無料版で使えるのが「Authorization Code」。

 

OAuth2をやっている人はどうってことないのかな?

 

Auth Codeをとるために、「/oauth/authorize」にアクセスする。

次にAccess Tokenをゲットするのじゃ。

 

あとは、晴れてリクエストをなげよう!!!

 

なんのこっちゃいっていう人は「https://qiita.com/TakahikoKawasaki/items/e37caf50776e00e733be」を参照してください。

 

エンドポイントは

/oauth/authorize/
/oauth/token/
/oauth/me/
/oauth/destroy/
/.well-known/keys/
/oauth/introspection/
/.well-known/openid-configuration/

があるそうです。

 

認証画面を出すには?

function.phpに下記のフィルターを追加する

add_filter( 'wo_use_grant_request', '__return_true' );

 

まあ、慣れるまでちょっと時間がかかりそうだ

WordPressの「メディア」>「画像編集」で画像が表示されない件

WordPressで「メディア」>「任意の画像」>「画像を編集」をクリックしていったときに添付ファイルの詳細で画像が表示されいことがありましたので対処方法をメモしておきます。

■画像が表示されない事象

 

■結論、FUNCTION.PHPが悪さしていた。

今回は、function.phpを「?>」で閉じてた。💦

 

なんでしょう。どうしたことでしょうか…閉じておりました(ノД`)・゜・。

他にもこのような事象があったときは、function.phpを見直してみましょう。