contactform7でメール送信内容を強制的に変更する

contactform7でメール送信内容に追加したり、引いたりしたい場合があるかと思います。

今回なそんな場面に遭遇しましたのでhook方法を考えてみました。

 

まずは、「wpcf7_before_send_mail」でhookを掛ける

function.php

add_action("wpcf7_before_send_mail", "wpcf7_do_something");

function wpcf7_do_something($WPCF7_ContactForm)
{

~~~ ここに処理内容 ~~~
 return $wpcf7;
}

 

これでまずはメール送信時のフックが完成!!

 

じゃあ、何をどうしてっていうところで例えばメール本文を置き換える場合は

add_action("wpcf7_before_send_mail", "wpcf7_do_something");

function wpcf7_do_something($WPCF7_ContactForm)
{
    if($WPCF7_ContactForm->id() == コンタクトフォームのID)
    {
        $wpcf7      = WPCF7_ContactForm::get_current();//wpcf7で設定したデータを取得する
        $submission = WPCF7_Submission::get_instance();

        if ($submission) {
            $data = $submission->get_posted_data();//ここでPOSTされたデータを取得する

       //メールの本文を置き換える場合:例
              $mail         = $wpcf7->prop('mail');//メール送信部分を取得
              $mail['body'] ="おきたかえた本文";//本文の置き換えの文章

       ↓で置き換える
              $wpcf7->set_properties(array(
                    "mail" => $mail                
              ));

        }
    return $wpcf7;
     }
}

ってな感じで変更することができる。なので動的に変更しなければならない場合に役立つ。

 

 

contactform7で日付の入力ボックスをどうにかしたい

contactform7で問い合わせフォームを多々作成するのですが、やはり日付の部分が問題になることが多いです。

標準でついているDATEは、HTML5のカレンダー入力を利用するのですが、これですとIE11が非対応になる。

 

contactform7でHTML5のカレンダーが非対応の場合の対処

function.phpに追記

add_filter( 'wpcf7_support_html5_fallback', '__return_true' );

 

 

やっぱりこれだとHTML5のカレンダーを利用するので年数をプルダウンにしてほしいとかもろもろ対応できないです。

っていうことでjQuery UIのカレンダーを利用するのが良いかと思います。

 

WordPressにjQuery UIカレンダーを組み込む方法

function.phpに追記

・wp_enqueue_scriptsでアクション追加

   wp_enqueue_script('jquery-ui-core');
   wp_enqueue_script('jquery-ui-datepicker');

 

 

・filter追加

add_filter( 'wp_head', function() {

    ?>
    <script>
        jQuery( function() {
            jQuery( ".datepicker" ).datepicker({
                changeYear: true,  // 年選択をプルダウン化
                changeMonth: true,  // 月選択をプルダウン化
                showMonthAfterYear: true,//年を月の前にする
                yearRange: '-100:+0',//年の現在の年よりも100年前よりスタートする
            });
        } );
    </script
    <?php
} );

 

ていうことでjQuery UIのカレンダーが「.datepicker」というクラスで呼び出せるようになりました。

あとは、コンタクトフォーム7でテキストボックスで作成し、クラスに「.datepicker」を指定すればOKです。

消費税率変更で電卓の消費税率を変更しなくては

消費税率が変わると電卓の消費税も変更しなくてはいけません。

久しぶりの変更なので覚えてませんよ。

 

 

???ってな状態だと思いますので

 

まずは、メーカーと型番を控えます。

 

インターネットで検索!!

ネットって便利ですね。

 

電卓の消費税率設定のリンクをまとめてみました。

 

CANONの電卓は↓

https://faq.canon.jp/app/answers/detail/a_id/619

 

シャープの電卓は↓

https://jp.sharp/support/e_calc/tax.html

 

カシオの電卓は↓

https://support.casio.jp/answer.php?cid=004001001001&qid=6891&num=1

 

電卓の消費税率が保存できない!

そんなときは、電卓内の電池が消耗している可能性が高いです。

裏ブタを開けて電池を交換しましょう!おおまか、ボタン電池が入っています。

 

っていくことで電卓の消費税率が保存されないので、開けてみたら、電池が膨張し、液漏れしてました(;´∀`)

 

ソーラーと併用なので電卓機能は使えてしまうのですが、その裏では…電卓の電池を定期交換しないとだめかもしれませんね。

 

 

 

消費税込みの金額から消費税の金額を求める。

例えば1,080円の税込み商品で8%の消費税率だった場合の消費税を求める方法

計算式:1,080 ÷ 1.08 x 0.08 = 80円

 

っていうことで計算可能です。

【WordPress】Ulitmate Memberのユーザー権限グループでグループ名を指定する場合の注意

Ulitmate Memberのユーザー権限グループでグループ名を指定する場合の注意しないといけないことがありました。

 

発動条件としては

権限グループ名:日本語の権限グループ名ABC

 

となっている場合。

具体的には最後の文字が英字で終わる場合

 

作成したロールIDが「um_%e3%82%b9%e….」のようになる。

通常は「custom_role_1」のように英数字で作られる

 

対処としては、最後の文字を英字にしないこと。全角で終わること。

 

もし「um_%e3%82….」のようなロールIDを作ってしまったら、通常の削除では消せない。

 

削除する場合は、

・DB上の「wp_options」の中の「um_role_」から始まって「%xx%xx」となっている行を削除する

・User Role Editorかなにかで、該当の権限を削除する

(格納先がわかりずらいのでこのようにしている)

 

 

【WordPress】コンタクトフォームプラグインで確認機能が標準で装備されているものはどれ?

コンタクトフォームプラグインで確認機能が標準で装備されているものがほしかったので調べた内容をまとめてみました。

 

■contactform 7

標準無し

別プラグインで実装可能だが微妙

→Jqueryとかである程度記述して、POPUPMAKERプラグインで確認をPOPUPで表示したほうがわかりやすいかも。

 

データは残せるのか:別プラグインで残すことが可能

 

■weforms

確認画面ないみたい

slack、salesforceとかに送れるみたい

データの残すのも別のツールに連携

 

■Ninja Forms – The Easy and Powerful Forms Builder

確認画面機能無し

フォーム作るのは簡単。ただ、姓と名を分けて横並びとかは苦労しそう

送信された履歴は残るみたい

 

 

■MW WP Form

確認画面機能あり

フォームの作り方は従来通りとっていいのかな?

エディタ画面でショートコードを埋めていくのでレイアウトも自由かな

データはフォーム毎に残す、残さない設定をする

また、データに残すデータは、メールで送信したデータに限るようだ。

独自のバリデーションも用意できるみたいなので拡張性はあるかな

 

いじょう、ざっくりな内容でした。

 

【WordPress】投稿画面をすっきりとさせる

WordPressの投稿画面をすっきりしたいのと、追加されたフィールドの初期値を設定したい!って思ったのでやってみました。

 

画面をすっきりさせたい

1.投稿画面上部の「表示オプション」の中身を表示する

そうすると下記のように項目が多数ある

 

2.ブラウザの検証を起動して、非表示したい項目の値を取得する

 

3.function.phpに記述する

/**
 * 投稿画面から不要な枠(メタボックス)を無効にします。
 */
function remove_post_meta_boxes() {
    remove_meta_box( 'aiosp', 'post', 'normal' ); 

}
add_action( 'admin_menu', 'remove_post_meta_boxes' );

 

remove_meta_boxの設定ははこちら

これで不要なものの表示がなくなる

 

記述としては下記のように$pageに「post」「page」「カスタム投稿のスラッグ名」を入れればよいらしいがpost以外いかない、、、

remove_meta_box( $id, $page, $context );

 

 

■ultimatemember の Content Restriction の初期値

 

↓で値に対してhookがかけられるようだ

https://docs.ultimatemember.com/article/976-umadminaccesssettingsfields

 

add_filter( 'um_admin_access_settings_fields', 'function_name', 10, 2 );
<?php
add_filter( 'um_admin_access_settings_fields', 'my_admin_access_settings_fields', 10, 2 );
function my_admin_access_settings_fields( $fields, $data ) {
    // your code here
return $fields;
}
?>

 

 

次に初期値。。。

 

 

WordPressを運用する上で気になっているプラグイン

備忘録メモになるのですがWordPressを運用する上で管理を簡略化、不要なものを見せないなどのプラグインで気になったものをメモして残していきます。

 

■Admin Columns

無料:投稿や固定記事を表示を変更するプラグイン

有料:CSVでの出力が可能 → 記事一覧ほしい時につかえるか

Admin Columns

 

 

■Admin Menu Editor

メニューの並び替え類が可能

→利用中

 

Admin Menu Editor

 

忘れてなければ少しずつアップデート予定。

 

【WordPress】からログアウトしようとしています 本当にログアウトしますか ?

「からログアウトしようとしています 本当にログアウトしますか ?」と表示されてログアウトが正常にできませんでした。

 

 

調べていくとどうも「WP User Frontend」プラグインのバージョンが「3.1.8」で発生しました。

その前の「3.1.7」でもただしくログアウトできない・・・・

 

WordPressを入れなおしてみるか?

 

→新規でインストールしたときは、「WP User Frontend」が入っていても問題なくログアウトできた。

 

それなので「WP User Frontend」の設定をリセットしたら、ログアウトの問題は解決したようなんだ。

 

って、ちょっとまだ検証中。

【WordPress】カスタム投稿で投稿が0件でもPOST_TYPEを取得する

WordPressでカスタム投稿のPOST TYPEで表示設定を見分けるようなものをつくっていたときに投稿記事が0件だとPOST TYPEが「FALSE」で値が取得できなくてこまった。。。

 

「get_query_var」で「post_type」を取得できるらしく、これを利用してみた。

$post_type = get_query_var( 'post_type' );
echo  $post_type;

 

 

 

WordPressでメディアに画像をアップロードしたらHTTPエラー。

WordPressでメディアに画像をアップロードしたらHTTPエラーになりました。

あれ、今まで何も問題なくやってきたのになぜ?って思いましたが疑問に思っていてもしょうがないので対応方法をまとめてみました。

 

■エラー

メディア→画像アップ→HTTPエラー

 

 

■エラーログ

mod_fcgid: stderr: PHP Fatal error:  Maximum execution time of 30 seconds exceeded

 

あれ、タイムアウトらしいです。

 

うむ。疑問は残りますが

 

■対処

php.iniの下記の値を変更

 

(修正前)

max_execution_time = 30

(修正後)

max_execution_time = 100

 

これで回避できました。

 

今回は、XSERVERのWordPress初期状態で発生!

まあ、回避できたからよしとしよう。