MW WP Formをやってみたのでまとめてみた。

今までコンタクトフォーム7を利用していましたが、今一つ、あのプラグインを導入するとこっちのプラグインが動かない等ちょっと面倒くさいことが多かったので「MW WP Form」を使ってみることにした。

 

プラグインについて

・無料

プラグイン本体(https://ja.wordpress.org/plugins/mw-wp-form/

 

・有料

フォームジェネレーター

⇒追加スタイルあり

 

MW WP Form CAPTCHA

 

プラグイン販売(https://plugins.2inc.org/mw-wp-form/add-on/

 

 

MW WP Formを利用してみて

 

フォームジェネレーター→今は販売停止

フォームジェネレーターは、簡単に作れるが、自由度は減る。でも、大抵は問題ないのでは??

ゴリゴリやってもいいんだけど変更も多いからGUIでちゃちゃっと変更したいから導入した

⇒スタイルはビジネスタイプがよかったので追加した。

 

独自バリデーションチェックについて

※XXXは、ルール名

「mwform_validation_rules」でフィルターを追加して独自の値チェックルールを作ることができた。

add_filter( 'mwform_validation_rules', 'mwform_validation_rule_XXX' );

「public function rule( $key, array $options = array() )」で$optionsに設定値を引き渡すのが最初よくわからなかった。

 

nameのところで最後に[XXX]で指定すればいいらしい。

name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][XXX]"

 

 

初期値を入れたい

ログイン情報は「https://plugins.2inc.org/mw-wp-form/manual/」を参照すれば利用可能。

あとは、filterで自分で作れるのでACFで定義した値も取得することが可能

add_filter( 'mwform_value_mw-wp-form-フォームID', 'my_mwform_value', 10, 2 );

 

 

通し番号

用意されている。

 

出力

用意されている。

 

これで作りたかったフォームができるかな・・・?

 

既に指定されたフォームに投稿済みなのか調べる

重複禁止!っていうフォームを用意したいと思ったのでちょっと実現できるのか調べてみました。

基本的にはデータは「post」「postmeta」で構成されているようなのでカスタム投稿と投稿者、フォームIDで抽出可能。

あとは「get_post_meta」で「tracking_number」を取得すれば、問い合わせ番号がわかる。

※ログインユーザー限定。

 

「このページには直接アクセスできません」って表示される件

完了画面URLだけ指定していたら、確認画面等でこのメッセージが表示されるようになった。

対処としては、全ての画面のURLを入れればよいようだ。

例:reportというページでフォームを作っていて、完了ページをthanksとした場合は下記のような感じ

 

ラジオボタンやチェックボックスの並びをランダムの順番にしたい

「mwform_choices_mw-wp-form-xxx」フィルターフックすれば可能「xxx」はフォームID

表示される毎に並び順が変わります。クイズや選択肢の位置を固定したくない場合に利用可能

 

あれ、確認画面で表示が異なることがある・・・なんだろうか..

function func_choices_random( $children, $atts ) {
    if ( $atts['name'] == 'フォームのネームの値' ) {
        shuffle($children);
    }

    return $children;
}
add_filter( 'mwform_choices_mw-wp-form-xxx', 'func_choices_random', 10, 2 );

→これだと呼び出される毎にランダムになってしまう。そのため、確認画面でもずれてしまう。

POSTしたときに送っている値は自動的に出力されてる「0,1,2…」の値である。

 

単純にシャッフルしただけだとフォームの戻り値が0,1,2…ってなってしまう。

 

っていうことでいっそのこと、VALUEと表示値を指定して返すことにしてみた。

フォームのVALUEの値が指定した値になり、ランダムが実現したよ~。

function func_choices_random( $children, $atts ) {
    if ( $atts['name'] == 'フォームのネームの値' ) {
        $shuffle = $children;
        shuffle($shuffle);
        $children = array();
        foreach ($shuffle as $value)
        {
            $children += array($value => $value );
        }
    }

    return $children;
}
add_filter( 'mwform_choices_mw-wp-form-xxx', 'func_choices_random', 10, 2 );

 

 

mwform_complete_content_mw-wp-form-xxxは、2回通る?

完了画面へのコンテンツ渡しのフィルターですが2回通るようです。

wp_insert_userを利用すると完了画面が一瞬表示されるが最初のフォーム状態に戻される

 

MW WP Formでユーザー登録までしてしまおう!っていう鬼畜仕様?の場合の事象が発生した。やるべきではないと思うが・・・。

MW WP Form version 4.4.2で試した。

今後のためにもメモとして残しておくがどうなんだろうか・・・。
「mwform_complete_content_mw-wp-form-xxx」を利用したいと思うが「wp_insert_user」を利用すると完了画面が一瞬しか表示されないし、2回何故か通っていた??なんだかわからない。

っていうことでちょっと創意工夫してみたもんだ。

mwform_after_send_mw-wp-form」というアクションフックがある。メール送信後の追加処理らしい。

このアクションフックで「wp_insert_user」を実施してみた。

その後、入力画面へリダイレクトさせる。

ざっくりと下記のようなイメージ。

なぜか、「registration」はフォームの入力画面。やってみた結果ベースさ。
※一度、結果を表示しないと次に「registration」アクセスしたときに結果が表示されたので矯正リダイレクトしてみた。

これだと完了画面にエラー内容を表示できないという問題はあるけどそれは諦めです。

add_action( 'mwform_after_send_mw-wp-form-xxx', 'my_mwform_complete_useradd' );

function my_mwform_complete_useradd( $Data ){
        //ユーザー追加
        $userdata = array(
            'user_login'  =>  $user_id,//ユーザ名
            'user_pass'   =>  $password,//パスワード
            'last_name' => $last_name,//ユーザー姓
            'first_name' => $first_name,//ユーザー名
            'user_email' => $email,//email
        );
        $user_id = wp_insert_user($userdata);
        wp_redirect( '/registration/' );
        exit();
}

 

ときにはシステムのルールなんてっていう事象が多いのが現状!!

 

ZOOMをWordPressのサイトに埋め込みしてみる

ZOOMをWordPressで利用するのに2つのプラグインが見つかりました。

 

Video Conferencing with Zoom

eRoom – Zoom Meetings & Webinar

 

 

違いもよくわかりませんのでとりあえず試してみることにします。

 

まずは「Video Conferencing with Zoom」から

 

ZOOMのAPIキーが必要とのことです。

※「https://deepenbajracharya.com.np/zoom-conference-wp-plugin-documentation/」を参照

 

簡単に説明するとZOOMにログインした後、デベロッパーサイトで「JWT」からアプリを登録し、APIを利用できるとのこと

 

settingのAPIキー蘭に取得したAPIを入力して保存。APIキーはすぐに発行される。

 

このプラグインだけでZOOMのミーティングやウェビナーの開催予定を作れました。

 

 

ショートコードで「zoom_join_via_browser」を利用するサイト内にZOOMを埋め込める。

※テストサイトがHTTPなので警告が表示されている

 

ウェビナーは、埋め込みないっぽい。基本的には情報が表示されるだけ。

 

まとめると、ZOOMのAPIでアカウントやミーティング、ウェビナーのスケジュールを作ることが可能

埋め込みできるのはミーティングのみ。

 

 

 

「eRoom – Zoom Meetings & Webinar」

 

同じようにAPIが必要。https://marketplace.zoom.us/develop/create

 

APIで連携するのでここでミーティングを設定することが可能

 

PROにするとwoocommerceでビデオミーティングを販売することも可能。

 

 

まあ、どっちもwoocommerceで販売するのが目的かな…

 

 

2021/1/28追記

そういえば、なんだかんだZOOM埋め込み(ミーティング、ウェビナー)がともにできるようになりましたw

オンライン学会(WEB学会)でサービス実現中!!1度のログインなので便利!

PDF Embedder Secureを試してみる

PDF Embedderは無料で簡単にPDFをWordPress内に埋め込みできるプラグインです。今回はその先にあるセキュアなことに意識て有料のプラグイン「PDF Embedder Secure」を試してみました。

 

■PDF Embedder Secure

https://wp-pdf.com/

価格的には3,500円程度。(1サイト版)

 

・無料版と有料版では別プラグインとして認識するみたいですが、どちらか1つしか有効にできません。

※ショートコードは無料版のまま利用できます。

 

■PDF Embedder Secureの設定画面

・メイン設定

連続ページにチェックが最初入っているので外すと無料版と同じ感じ

ツールバーの表示がマウスオーバーになっているので「ツールバーを常に表示」にする

 

・安全です

英語メニューです。

Secure PDFs : メディアにアップするとPDFがsecurepdfsというフォルダに入るとのこと

Disable Righlt Click:右クリック禁止

Cache Encrypted PFDs:安全なPDF(暗号化)でサーバーのキャッシュを利用するとのこと(ダウンロード速度アップ)

 

Text to display on secure PDFs: PDFに表示するテキスト

ここに記述したテキストがスライド上に表示されます。fullname, username, emailが利用できるとのこと。

セキュアのところにアップしたものだけ対象らしい。

 

そうするとダウンロードだけのリンクも作れないとちょっと物足らない…っていうことで調べてみた。

 

下記のようにすることでダウンロードリンクができる。

/?pdfemb-serveurl={urlencode(PDFのURL)}&pdfemb-nonce={nonceの値}

 

 

 

え?nonceの値はコードを見てみたら…

wp_create_nonce('pdfemb-secure-download-' . {URL});

ってな感じ。

 

いやいや、ショートコードでダウンロードするためのリンク作成が用意されていたよ。解説には書いてなかったような。。。

[pdf-direct-link url="PDFのURLを記述する"]ダウンロードはこちら[/pdf-direct-link]

これでダウンロードへのリンクが記述される。

 

 

 

WP USERFRONTENDからPDFファイルをアップロードしてもセキュアに入りました。

 

 

Nginxでは、.htaccessが利用できないので設定を追加しないといけない

下記のような設定を追加するとのこと。元情報はこちら

location ~ ^/(wp-content/uploads/securepdfs) {
allow 127.0.0.1;
deny all;
}

kusanagiに不慣れなので反映しないで苦戦してたら、上位の方に記述したら反映した。何が影響しているのかな…

 

 

Internet Explorer11に対応していない

「読み込み中…」となり、表示されません。

 

WP All Importでインポート試験

WordPressの記事を「WP All Import」でざくざくインポートしよう!!っておもって試してみました。

 

確かに、CSVやEXCELから記事、ACF、タームの利用が可能!!

 

課題点

・Excelから改行含んだ複数行テキストをインポートしたときに改行あたりに予期しない文字が入る

⇒CSVならOK

・タームのスラッグを指定しているがなぜか、新しくtermが作られる

⇒毎回同じ行なので、データに問題??

 

・インポートしたユーザーデータがSKIPされた

→何件スキップしたのかって出る割には、どのデータがスキップしたのかわかりにくい。

その場合は「WARNING Sorry, 」として記述されている文面をログから探すと良い。

メールアドレスが重複している場合は「WARNING Sorry, that email address」と記述されている。

ユーザーの場合は、ユーザー一覧をエクスポートしてユーザー登録日で判別するのもありかもしれないが、どちらにしろ大変

WordPressのアップロードの機能でプライベートなものが利用できるのか調べてみる

WordPressのアップロードしたファイルは通常メディアに格納され

 

Download Managerの場合

WordPress Download Manager

ファイル格納先のフォルダはhtaccessで閲覧できないようになっている。「wp-content/uploads/download-manager-files」

RewriteEngine On
<Files *>
Deny from all
</Files>

 

wp file download

https://www.joomunited.com/ja/%E3%83%AF%E3%83%BC%E3%83%89%E3%83%97%E3%83%AC%E3%82%B9%E8%A3%BD%E5%93%81/wp-file-download

 

こちらもアクセス禁止となっている。「wp-content/uploads/wpfd」

deny from all

 

・良いところ

フロントからファイルアップロードができる

IMGやPDFは、権限が許可されていれば、File direct linkにかかれているURLで「IMG SRC=」や「[pdf-embedder url=””]」で開くことが可能

ファイルは全体で管理者が管理するタイプ

直リンクでファイルが見れない

 

・気になる点

ディレクトリの階層ができない??

権限設定はグループのみ

もう少し細かく設定したい

 

 

Frontend File Manager Plugin

 

Frontend File Manager Plugin

えーと、有料版も入れてみました。

 

・よいところ

個人のフォルダができ、そこにファイルをアップロードできる。

フロントからも投稿。むしろフロントがメイン?

 

・わるいところ

直リンクでファイルにアクセスできる!??(ノД`)・゜・。

⇒むしろ直リンクで画像表示を管理画面でも利用しているようんだ…htaccessでアクセスできないようにしてみたらだめだった…あー、失敗,,,,

 

WordPress File Upload

WordPress File Upload

これは指定しないとuploadsフォルダ配下にファイルを見たいだ。FTPにもつながるようだ

 

 

Frontend Uploader

https://wordpress.org/plugins/frontend-uploader/

このプラグインは、フロントからメディアへアップロードするプラグイン

 

 

Memphis Documents Library

https://ja.wordpress.org/plugins/memphis-documents-library/

member投稿が可能且つプライベートと共有ができるみたい

 

管理者が行うのであれば「wp file download」が良いかな

個人がファイルをアップロードして…ってなるとどれもこれも微妙…

PowerPointの埋め込みにOffice365の組織と個人アカウントでの違いがあるのか?

PowerPointをホームページ上に埋め込むための検証を行っていました。

 

 

■組織アカウントで埋め込みコードを出力して埋め込んだ場合

 

⇒OneDrive上からだとOneDriveの権限が有効になるとのことでログインが求められる仕様のようです。

⇒回避としてはShrePointサイトを作成しそこにドキュメントをアップりして共有するのが誰でも閲覧可能になるようです。

⇒結局できない。共有リンクをクリックして一度、該当のスライドを閲覧すれば、HPに埋め込まれたスライドも表示される

⇒ダウンロードを禁止にすると、埋め込みが動作しないっぽい。

 

動作がわかりにくい

 

■個人アカウントで埋め込みコードを出力して埋め込んだ場合

 

埋め込み内容が表示されます。

 

↓ビューワーがあるようで、下記のようにPPTのファイルを渡せばスライドショーを見ることが可能。転送しまくるからファイル容量があると重い

http://view.officeapps.live.com/op/view.aspx?src=”ファイルURL”

組織だとOffice365にログインしていない場合は、ログインを求めらるみたいです。

 

同時閲覧数にも上限があるようです。

https://docs.microsoft.com/ja-jp/SharePoint/install/software-boundaries-and-limits-0#ListLibrary

ABコマンド(Apache Bench)を試してみる

WEBサーバーの性能測定を行いたいと思い、ひさびさにABコマンドを使ってみることにしました。

久しぶりに使うとなんだったか忘れてしまいますね。

 

基本的には下記の記述になります。

ab -n <総リクエスト数> -c <同時リクエスト数> <URL>

例えば、100ユーザがhttp://exampleに10リクエストを発行した場合を想定。

ab -n 1000 -c 100 http://example/

 

・結果

Server Software:        nginx : WEBサーバーのソフト名
Server Hostname:        <ホスト名> :サーバーホスト名
Server Port:            80:サーバーのポート番号

Document Path:          / : ドキュメントパス
Document Length:        27411 bytes : ドキュメント容量

Concurrency Level:      100
Time taken for tests:   8.418 seconds
Complete requests:      1000 :リクエストの成功回数
Failed requests:        0 : リクエストの失敗回数
Total transferred:      27771000 bytes
HTML transferred:       27411000 bytes
Requests per second:    118.79 [#/sec] (mean) : 1秒間で処理されたリクエスト数
Time per request:       841.816 [ms] (mean)
Time per request:       8.418 [ms] (mean, across all concurrent requests)
Transfer rate:          3221.62 [Kbytes/sec] received:1秒間で受信したデータ数

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   8.2      0      65
Processing:   104  811 124.2    824    1084
Waiting:       39  810 124.6    824    1084
Total:        113  812 124.2    824    1107 : 合計でどれくらいかかったかの時間

Percentage of the requests served within a certain time (ms)
  50%    824 : 50%リクエストが0.824秒以内に返ってくる
  66%    847
  75%    860
  80%    869
  90%    901
  95%    964
  98%   1013
  99%   1034
 100%   1107 (longest request)

 

で、何がいいんだか悪いんだか分らん…いろいろと見比べながら…

 

Time taken for tests

試験にかかった時間。数値が低いのが良い

 

 

Failed requests

処理に失敗したリクエストの数。数値がひくのが良い。基本0で考えるのかな

 

 

Requests per second

1秒で処理できるリクエスト数。数値が高い方が良い

 

Time per request

1リクエストにつき処理に要した時間。数値が低い方が良い

 

Transfer rate

1秒間で受け取ったデータの大きさ。数値が高い方が良い

 

Connection Times (ms)

数値が低いほうが良い

 

Percentage of the requests served within a certain time (ms)

リクエストを完了するにかかっている時間なので数値が低いほうが良い。

 

ってな感じです。わかったようなわからないような…

さて、WordPressのwoocommerceにトライしてみることした。

せっかくなのでWordPressのECカートの「woocommerce」にチャレンジしてみる。っていうことにした。

まずは、のーがきから入ると、2011年にリリースされたそうな。
テンプレートテーマもそれなりにあり、プラグインも無料、有料含めてそれなりになるとな…(ウィキペディアより)

「woocommerce(ウーコーマース)」略して、「う○こちゃん」。。。すみませんでした<m(__)m>

 

それでは、プラグインのインストールから準備を始めたいと思いおます。

 

1.WooCommerceのインストール

 

・プラグインから新規追加で「WooCommerce」と検索して、「今すぐインストール」をクリックする。

 

・「有効化」

 

・初期の設定を行っていけるので指示に従います。「はい、お願いします。」をクリックする

 

・・・・チーン。500番エラーだとよ。幸先の悪いスタートとなりました…

 

ログをみると、imagickがunableだと。

PHP Warning:  PHP Startup: imagick: Unable to initialize module

 

あれ、有効なんだけどな

 

あー、WordPressのバージョンが5.2以上だったよ。手抜きしてたからバージョンが古かったよ。

PHPのバージョン7.0→7.2にしてみた。ちと、デフォルトバージョンがWordPressもPHPも古かったよ

 

 

気を取り直して続きのセットアップを…

 

・店舗の地域情報を入力

 

・販売するジャンルを選択

 

・で、次に販売する商品の種類

 

・販売する商品の数や場所など。

 

・次にテーマを決めるんだと。

 

でおちまい。あ、いきおいでjet packを入れてしまった…

 

ストアの設定

 

まずは、税金の設定をしておきます。

「税を設定する」→次へ進めていく。

 

自動って便利~~って思ってたら、、やっぱり、何も入っていない

 

っていうことで手動で税(10%)を設定

CSVにすると↓の感じ。

国コード,都道府県コード,郵便番号,市区町村,率 %,税率名称,優先順位,複合,送料,税区分
JP,,,,10,消費税,1,0,0,

 

 

つぎに送料を設定しておきます。

「設定」>「送料」から設定ね。

 

通貨オプションを設定します。最初はドルになっているので円に変更

 

 

この後は手動で1つ商品を追加してみます。

 

で、販売サイト上を見ると,..

 

 

こんな感じでできあがりました。

 

 

決済を設定する

 

stripe押しのようですのでstripeを作ってみます。(まずはテスト用で)

 

・アカウントの登録

https://dashboard.stripe.com/register

 

「開発者」>「APIキー」をクリックします。

公開可能キーとシークレットキーをメモします。

 

 

「設定」>「決済」>Stripe(クレジットカード)の右側のボタン(セットアップもしくは管理)をクリックします。

 

Webhookは、Stripe側でキャンセル、返金などを行った情報が、WooCommerceに反映されるとのことなので登録します。

 

 

 

 

・連携した後、テスト注文してみたところ簡単に連携できました。

ブラウザがパスワードを保存する仕組みを少し調べてみた

ブラウザが「パスワードを保存しますか?」って聞いてきて、これ、ID,これパスワード!って勝手に表示されるのですが、

どうしてもIDが予期せぬものになるケースがあり、なんでかと思い、調べてみました。

 

■ケース1:パスワードの前にメールアドレス欄がある場合

 

例えば、下記のようなケースは、メールアドレスがIDとして表示される

↓保存したときに下記のように表示される

 

■ケース2:パスワードの前にユーザー名をしてみた場合

↓ブラウザでは..

 

お!ユーザー名がIDとして認識してくれた。

 

ってことは、パスワードの前にある文字列をIDとして認識して動作するようだ

 

【WordPress】カミングスーンプラグインを使う(2020年)

ひさびさにWordPressでカミングスーンを利用します!

ではさっそくプラグインをどーしようかと…

 

WordPressのプラグインインストール画面で探してみるとカミングスーンいっぱいありますね…

 

今回は、一番最初に表示されたプラグインの「Coming Soon Page, Under Construction & Maintenance Mode by SeedProd」を使ってみたいと思います。

 

それでは、「Coming Soon Page, Under Construction & Maintenance Mode by SeedProd」の横の「今すぐインストール」ボタンをクリックし、有効化します。

 

 

インストールが完了すると設定画面が表示されます。

 

「General」欄で「Enable Coming Soon Mode」を選択する

 

「Page Settings」でロゴや「Headline」や「Message」を入力すればOK.

 

 

あとは、シークレットウィンドウなどで確認すれば

こんな感じで表示されます。