このページの本文へ

フロントエンドエンジニアのblog

有限会社Willさんいん

このページの位置: home タグ: WordPress

“WordPress” タグの記事

Welcart の定期購入のカート遷移中にお客様情報入力ページで購入者情報入力フォームを表示して会員登録を必須にする

WordPress のショッピングサイト構築プラグイン Welcart で、定期購入プラグイン WCEX Auto Delivery を利用した場合、定期購入商品をカートに入れてお客様情報入力ページに遷移すると、ログインフォームのみが表示されます。そのため、新規の購入者は「新規会員登録はこちら」をクリックして別画面で会員登録をする必要があります。

定期購入は会員登録が必須となっているための仕様と思われますが、通常購入の場合はお客様情報入力ページで購入者情報の入力と同時に任意で会員登録ができるので、これと同じように定期購入の場合でも、お客様情報入力ページでそのまま会員登録ができた方がフローが統一され、分かりやすいのではないかと思います。

そこで検索すると、Welcart のテクニカルノートに「【Auto Delivery】定期購入時のカート遷移中に会員登録フォームの表示カスタマイズ」というドンピシャな記事があったのですが、これは Welcart Basic のテーマを使用した場合のもので、Welcart Basic 独自の関数が使われているため、WCEX Auto Delivery 同梱の wc_customer_page.php を使用したオリジナルテーマには当てはまりません。

また、「次へ」ボタンの非表示だけでなく、パスワード欄の表記なども変更した方がよいので、そのカスタマイズを考えてみました。

“Welcart の定期購入のカート遷移中にお客様情報入力ページで購入者情報入力フォームを表示して会員登録を必須にする” の続きを読む »

Jetpack のパブリサイズ共有をカスタム投稿タイプと特定のカテゴリの投稿のみに適用する

WordPress の投稿を自動で Facebook ページに投稿したい案件があり、当初、自動投稿に特化し機能も豊富な NextScripts: Social Networks Auto-Poster (SNAP) というプラグインを使用しようと設定を進めていましたが、“Invalid Scopes: manage_pages, publish_pages.” という警告が出て、どうにも連携することができず。

どうも、テストアプリを作成したり、レビュー申請ビデオを作成して Facebook の審査を受けなければならないなど、いろいろ面倒っぽいので、SNAP の利用は諦め、API が不要な Jetpack プラグインを利用することにしました。Jetpack はアクセス解析やセキュリティ対策など、30種類以上もの機能がパックになっているプラグインですが、この中にある Facebook や Twitter などの SNS と連携できる「パブリサイズ共有」の機能を使用します。

ただ、自動投稿に特化したプラグインではないので、デフォルトではカスタム投稿タイプに対応していません。また、今回カスタム投稿タイプの投稿全てと、標準の投稿の内、特定のカテゴリの投稿のみを Facebook に自動投稿せる必要があるのですが、カテゴリを選択できる機能もないので、カスタマイズしてみました。

“Jetpack のパブリサイズ共有をカスタム投稿タイプと特定のカテゴリの投稿のみに適用する” の続きを読む »

WordPress からテーマのテンプレートを使って CSV を書き出す

WordPress からカスタム投稿タイプの投稿データとそれに関連するデータを CSV で出力したい案件があり、テーマの中のテンプレートを使って実現してみました。

投稿データを CSV で出力できるプラグインはあるようですが、今回一定の条件で絞り込んだり、Advanced Custom Fields の「投稿オブジェクト」カスタムフィールドで紐付けた、別のカスタム投稿タイプの投稿データを一緒に出力する必要があったため、特定のページのテンプレートを作成する要領で実現できないかと考えました。

7年くらい前まで Movable Type を使っていましたが、Movable Type のテンプレートは静的ファイルを書き出すので、書き出すファイル名と拡張子を指定すれば、CSV などのテキストファイルを書き出すことも、CSS や JavaScript のファイルに MT タグを使って、セレクタや値を代入したり変数をループで処理したりすることができました。

一方、WordPress のテンプレートは動的に Web ページを表示するものなので、Movable Type のように簡単には行きません。

でも、以前 WordPress に FullCalendar を組み込んだ際、カレンダーに投稿データを読み込むための JSON 形式のファイルをテンプレートを使って作成したり、同じように Google Map に投稿データからマーカーを生成するための XML 形式のファイルをテンプレートを使って作成した経験がありましたので、まずは同様の方法で CSV 形式のファイルを作成してみました。

“WordPress からテーマのテンプレートを使って CSV を書き出す” の続きを読む »

Contact Form 7 の送信データから自動で投稿を作成し、ACF のグループフィールドに反映させる

WordPress でメールフォームから送信されたデータを元に、自動で投稿を作成したい案件があり、調べてみたら Contact Form 7 を使うと実装できることがわかりました。

ContactForm7のフォーム送信時に自動でブログ記事を作成する方法

Contact Form 7 で用意されているフック「wpcf7_mail_sent」を利用して投稿を作成できるというもので、カスタムフィールドの値も登録することができ、まさに実現したい仕様でしたが、今回、Advanced Custom Fields (ACF) プラグインのグループフィールドのサブフィールドにもデータを登録する必要がありました。

そこで、次の記事を参考にして、上記の方法と組み合わせることで実現することができました。

【WordPress】PHPプログラムからAdvanced Custom Fieldsの繰り返しフィールドに値を保存する方法 – 上尾市のWEBプログラマーによるブログ

更に、Contact Form 7 Serial Numbers プラグインによる連番も取得してカスタムフィールドに反映してみました。

“Contact Form 7 の送信データから自動で投稿を作成し、ACF のグループフィールドに反映させる” の続きを読む »

ACF のデイトピッカーで取得した日付が1日ずれる

WordPress のバージョンを 5.2 から 5.4 にアップグレードしました。昨年11月に 5.3 がリリースされていましたがアップグレードを保留していたので、1世代超えてのメジャーバージョンアップとなりました。

するとあるサイトで、Advanced Custom Fields (ACF) プラグインのデイトピッカーで設定した日付が、1日前の日付で表示されるというトラブルが発生しました。時刻を設定してないので確認できませんが、正確には UTC との時差である9時間前なのかもしれません。

調べてみると、WordPress 5.3 で日付と時刻の処理が大きく変更(改善)されたようで、“PHPのタイムゾーンを date_default_timezone_set() で変更しないでください”ということのようです。

当該サイトは date_default_timezone_set('Asia/Tokyo'); として、date() で現在の日時を取得していたため、今回のバージョンアップで誤作動を起こしたようです。

そもそも、当初から date_default_timezone_set() を使わず、date() ではなく WordPress 独自の date_i18n() を使えばよかったんですね。

さらに、date_i18n() についても WordPress 5.3 からこの代わりとなる wp_date() という関数が新たに追加されたようです。

1 2 3 8

page top