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の商品インポートについてはこんなところでしょうか…

オンラインショップってどういうものがあるのか再度まとめてみる

オンラインショッピング、ショッピングサイト、ECサイトってやっぱり、一定に割合でお仕事のお話があります。この機に再度、ショッピングサイトについてまとめてみたいと思います。

 

まずは、呼び名を考えてみる

ショッピングサイト

ECサイト

Eコマース

EC

ネットショップ

オンラインショップ

等と呼ばれています。

 

キーワードのトレンドを見ると「オンラインショップ」が多いみたいなのでオンラインショップでとりあえず進めます。

 

 

 

オンラインショップを開設するにあたりどんなものがあるのか?

まずは、1店舗なのか多店舗型なのか

 

1店舗型オンラインショップ

一般的に言うショップかと思います。比較的簡単なツールから独自色を出したい場合等多種多様にあります。お手軽なものからスタートっていうのもありかな。

技術力があれば、EC-CUBEやwooCommerce、Welcart等のオープンソースのツールを利用するのも一つの手です。

オンラインショップのツールではカスタマイズできないところも手が届きます。

 

 

多店舗型オンラインショップ(モール型ECサイト)

結構、仕様が分かれてきますのでどうしたいのかが大事です。また、運営したいというのであれば、初期投資も1000万円以上を。

 

・マーケットプレイス型

マーケットプレイス型は、商品データのみ掲載するタイプのモール型タイプ。商品データ等は、モール側で管理することになる。決済等もモール側で管理するタイプ。

店舗ページのカスタマイズなどはできない感じ。

 

オンラインショップイメージとしては Amazon。

 

・テナント型

普段接することがあるショッピングモールのイメージ。店舗毎の特徴を出すことが可能。

商品の登録から、受注管理、売上集計もすべての業務を独自に行う必要がある。

 

オンラインショップイメージとしては、楽天市場やYahoo!ショッピング

 

 

ショッピングサイトも開設すれば、売り上げが上がるというものでもないのでどうのように集客するのかが大事ですね。

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で何度か記事を更新したことに原因が???

 

っていう推測な領域。

 

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

 

Excelで住所から郵便番号を変換する方法

Excelで住所から郵便番号を変換する方法を教えてほしい相談があったので調べた見た内容をまとめたみました。

 

■動作環境

Windows10

Excel2019

 

■設定方法

1.下記のサイトからダウンロードします。

excelzipcode.7japan

 

2.圧縮ファイルを解凍します。

3.解凍したファイルの「excelzipcode7japan\releases\0」のディレクトリに移動します。

 

4.「01900f62-c4f4-4e49-9d06-5fe74334ee80」→「zipcode7.xla」にファイル名を変更します

 

5.Excelを起動します。

 

6.「ファイル」>「オプション」をクリックします。

 

7.「アドイン」>下の方の「管理:Excelアドイン」の設定をクリックします。

 

8.「参照」をクリックします。

 

9.参照で開いたところに「4」の「zipcode7.xla」をコピペします。

 

10.有効なアドインで「郵便番号変換ウィザード」にチェックを入れ、「OK」をクリックします。

 

11.Excelを終了し、再度起動します。

 

12.「アドイン」のタブが表示されていることを確認します。

 

13.アドインタブにウィザードが追加され、そこから郵便番号変換ウィザードが利用できるようになります。

 

あとは、試してみてください。

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で項目の格納が可能になった。

 

 

コロナでテレワークの影響!?でPV数が減少している件

コロナで2020年4月から自粛やテレワークが加速していると思います。

その影響なのか、このサイトのPV数が落ちました。なんせ、コンピューター系の内容しかホームページ掲載していないので・・・。

 

えーと、読まれるためにうりゃりゃって書いていなかったのでマニアックなメモ的なものでサイト構成していたのでそんなもんですが・・・

グラフで見るとちょっと悲しいです。

テレワークになるとコンピューター系は調べなくなるんですね。たぶん、作業時間が減るのか、仕事している風な人がみていたのか、それもとピンポイントの仕事やってさっさと別のことをするのか…わかりませんが。。。

 

 

数値かされるとすごく突き付けられます。

 

なんせ、ハンドジェルの記事の方が最近ではすごく読まれているので。😢

 

っていうことで、やってらんねーって感じで食い散らかした、うさぎさんからのコメントです。

 

 

 

ぐーたらな、おっさんになってきた黒うさぎさん!!

 

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

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

 

 

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

 

・サーバーの性能

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

 

が主な要因になります。

 

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

基本的にはハードウェア回りの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' );

 

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