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」と記述されている。

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