プラグインTrust Formでカスタマイズしていること

確認画面付きで重宝するWordPressプラグインTrust Formのカスタマイズメモ。

カスタマイズというより具合が悪かったところの対応。

  • php の Notice, Warning
  • 自動返信メールの本文で[FORM DATA]一括出力ではなく個々の入力項目を指定する場合、項目名に「/」が含まれているとうまくいかない。
    例)[AAA/BBB]
  • フォームのチェックボックスにクラス名をセットしてあるとき、このチェックボックスに何か修正するとセット済のクラス名が消えてしまう。

などを直します!

対象バージョン

  • Plugin "Trust Form" : 1.8.8
  • PHP : 5.4

カスタマイズ

  1. trust-form.php
    カスタマイズではありませんが、ソースに日本語が入っているのでshift-jis保存しないように注意!ソース上部で

    「Plugin Name: Trust Formプラグイン」

    などと全角文字を入れておくと気づきやすいかも。

  2. Notice対応

    Notice: Array to string conversion in ...../wp-content/plugins/trust-form/trust-form.php on line 953

    ■ trust-form.php(951,953行目)
    変更前:

    Line:951
    wp_enqueue_style('trust-form-front', plugins_url( "/css/default.css", __FILE__ ), array(). '1.0', 'all' );
    Line:953
    wp_enqueue_style('trust-form-front', plugins_url( "/css/default-responsive.css", __FILE__ ). array(). '1.0', 'all' );
    

    変更後:(arrayの後のピリオドをカンマへ変更)

    Line:951
    wp_enqueue_style('trust-form-front', plugins_url( "/css/default.css", __FILE__ ), array(), '1.0', 'all' );
    Line:953
    wp_enqueue_style('trust-form-front', plugins_url( "/css/default-responsive.css", __FILE__ ), array(), '1.0', 'all' );
    

     

    PHP Notice: screen_icon の使用はバージョン 3.8.0 から非推奨になりました。代替は用意されておりません。
    PHP Notice: get_screen_icon の使用はバージョン 3.8.0 から非推奨になりました。代替は用意されておりません。

    ■ admin/add.php(9行目)
    ■ admin/edit.php(22行目)
    ■ admin/entries.php(26行目)
    変更前:

    
    

    変更後:icon削除

    
    
  3. フォーム送信時のWARNING対応(項目名に「/」ありのケース)

    WARNING: PREG_MATCH(): IN ...../WP-CONTENT/PLUGINS/TRUST-FORM/TRUST-FORM.PHP ON LINE 2165

    フォーム部品項目名に半角スラッシュが含まれている場合に発生します。
    自動送信メール本文で[FORM DATA]ではなく個々の項目名を指定している場合には、入力値がきちんと表示されません。
    原因は、項目名を判断するための正規表現のデリミタに半角スラッシュを使用しているためです。

    '/['.$name.']/i'

    ※[$name]は項目名に当たる部分
    ソース変更箇所は、こちら↓
    ■ trust-form.php(2165行目)
    変更前:

    Line:2165
    if ( preg_match('/['.$name.']/i', $body) ) {
    

    変更後:(半角スラッシュを'{'等の項目名に使用していない半角文字に変更する)

    Line:2165
    if ( preg_match('{['.$name.']}i', $body) ) {
    

    こちらは自動返信メール本文の対応です。
    ・自動返信メール・件名⇒2173行目
    ・管理者宛メール・件名⇒2211行目
    も同様です。
    ※ソース変更したくない場合には、全角スラッシュを使うのも手ですネ。
    余談ですが…
    以前、別のバージョンで[]にバックスラッシュを付けないとうまくいかなかったことがありました。([⇒\[、]⇒\])

  4. フォーム部品・チェックボックスにクラス名をセットしている場合、これを修正する際にクラス名がなくなってしまう現象があります。
    ■ /js/add-form.js(267行目~)
    変更前:

    //セレクトボックス、チェック、ラジオのオプション値をリアルタイムに反映
    a('#setting-form').find("textarea.option-value-editor").bind('focus',function(){
    	var t = a(this),r = t.attr('role'),q;
    
    	if (r !== 'selectbox') {
    		q = setInterval(function(){
    
    			var p = t.val(), tmp = '', name=t.closest('tr').find(".setting-element-discription > ul > li > input:first").attr('name');
    			p = p.replace(/\r/g, '');
    			p = p.split(/\n/g);
    			for (var i=0;i'+ p[i]+'
  5. ' } t.closest('tr').find(".setting-element-discription > ul").html( tmp ); } ,200);

    変更後:(セット済みのクラス名を引き継ぐ)

    //セレクトボックス、チェック、ラジオのオプション値をリアルタイムに反映
    a('#setting-form').find("textarea.option-value-editor").bind('focus',function(){
    	var t = a(this),r = t.attr('role'),q;
    
    	if (r !== 'selectbox') {
    		q = setInterval(function(){
    
    			var p = t.val(), tmp = '', name=t.closest('tr').find(".setting-element-discription > ul > li > input:first").attr('name');
    			var myclass=t.closest('tr').find(".setting-element-discription > ul > li > input:first").attr('class');//(追加)
    			p = p.replace(/\r/g, '');
    			p = p.split(/\n/g);
    			for (var i=0;i'+ p[i]+''//(変更)
    			}
    
    			t.closest('tr').find(".setting-element-discription > ul").html( tmp );
    						
    		} ,200);
    

    チェックボックスを使っていたときに気づいたのですが、ラジオボタンも同様なようです。
    ちなみに、ソースで対応せずに、部品修正の際にクラス名を上書き保存することで回避できます!

One thought on “プラグインTrust Formでカスタマイズしていること

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA