こぶたのラッパ » Blog Archives

Tag Archives: WordPress

CMS

Contact Form 7で確認用メールアドレスの入力フォームを加える方法

Published by:

Contact Form 7はお問い合わせフォームを用意するのに、非常に便利なWordPressプラグインです。これまでWordPressを使ったサイトで、このプラグインを入れなかったことは一回もありません。

今回確認用メールアドレスを入力欄として設けなくてはならなくて調べたのですが、意外にいい方法が見つからなかったので、自分で作ってみました。

functions.phpに下記コードを追加(UTF-8で保存すること!)

<?php
add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter_extend', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter_extend', 11, 2 );
function wpcf7_text_validation_filter_extend( $result, $tag ) {
    $type = $tag['type'];
    $name = $tag['name'];
    $_POST[$name] = trim( strtr( (string) $_POST[$name], "\n", " " ) );
    if ( 'email' == $type || 'email*' == $type ) {
        if (preg_match('/(.*)_confirm$/', $name, $matches)){
            $target_name = $matches[1];
            if ($_POST[$name] != $_POST[$target_name]) {
                if (method_exists($result, 'invalidate')) {
                    $result->invalidate( $tag,"確認用のメールアドレスが一致していません");
                } else {
                    $result['valid'] = false;
                    $result['reason'][$name] = '確認用のメールアドレスが一致していません';
                }
            }
        }
    }
    return $result;
}
?>

※2015/3/4に修正しました。まつしたさん、情報ありがとうございます!

Contact Form 7の設定画面では次のようなフォームを記述

<p>メールアドレス<br />
[email* your-email] </p>

<p>メールアドレス (確認用)<br />
[email* your-email_confirm] </p>

これで確認用メールアドレスが実現できますよ~

発表、ニュース

A8min Ver1.4リリース

Published by:

今回のバージョンアップは、特に既に利用されている方にとっては大喜びの機能満載のはずです。

新機能は下記の4点です。

  • ダイレクトインポート機能(これまでは面倒なコピペ方式でした)
  • 重複したバナーを再表示しない。
  • ビジュアルエディタに広告バナー選択ボタン追加(WordPress)
  • 投稿記事やRSSへの広告バナー自動挿入(WordPress)


さらに!ようやくフリー版も用意できました
フリー版ではいくつかの機能を制限していますが、インポートして表示するという基本機能は有料の通常版と全く変わりませんので、購入前の試用版としてもお使いいただけます。

通常版、フリー版ともに、下記ページからダウンロード可能です。

» A8minダウンロード


下記の不具合修正も行っています。

  • ショートコード指定でカテゴリ検索が正確に行われていなかった不具合
  • タグ指定検索が正確に行われていなかった不具合
CMS

CMS「concrete5」でサイトを構築したけど疲れてやめた

Published by:

昨年11月、必見!怖くなるくらい優秀なCMS「concrete5」の記事を見ていたときにちょうど1つサイトを立ち上げようと思っていたので、試しにconcrete5でセットアップしてみました。

記事の通り、確かに画面全体の編集がらくらくに行えて、記事の追加も直感的で分かりやすい。
が、一番困るのは、サイト全体の共通ブロックを持てないというところです。

たとえばメニューバーには共通の内容(ページの一覧やカテゴリの一覧など)を表示したいとします。
concrete5ではなぜかそれをさせずに、ある固定の内容をコピペする機能だけを提供しています。
その場限りのコピペなので、その共通部分の内容を変更したい場合はこれまで作ったページ全部を一個ずつ修正しないといけない

何でこういう設計にしたのかはよく分からないのですが、おそらく私がイメージしていた利用コンセプトと一致していなかったのでしょう。
本家サイトのフォーラムでもこの件についての問い合わせが多く、もしかするとそのうち修正されるかもしれませんが、システムコンセプトから変わるわけではありませんので、やはり運用可能なサイトはある程度決まってくると思います。

concrete5での運用が有効なサイトは、次のようなものになるのではないでしょうか。

  • ページ数がある程度限られている(せいぜい10~20ページ)
  • html、cssを理解できる管理者がいない
  • ページごとの構成を内容に合わせて変えたい

こういうWebサイト作成はニッチでもなんでもないので、こういったサイトであればむしろおすすめするかもしれません(テーマが少ないのがネックですが)。

私の件のサイトは、結局使い慣れたWordPressで再構築しました。
我が家のような使いやすさ・・・

「最強の」とか「必見」とか「マスト」とかに弱いので、また別のところで同じことをやってしまいそうですが。。

発表、ニュース

A8min ver1.3リリース

Published by:

A8min
a8min_logo

本当はver1.2だったのが、何故かうっかりバージョン番号を飛ばしてしまいました。

ロゴも作って、インターフェースも一新しました!

a8min_browser

広告リンクブラウザを使って、広告主や広告プログラム、バナーサイズや形状で検索するのも簡単に行えます。

WordPressプラグインとしても、単体のプログラムとしても使えるので、A8.netでアフィリエイトをしている方にはおすすめです。

発表、ニュース

A8minをスタンドアロンでも実行できるようにしました

Published by:

先日公開しましたA8minですが、今のところどれくらいの需要があるのか分かりませんが、A8minをスタンドアロンで実行できるように修正しました。

ダウンロードはこちらからどうぞ。
http://hello.lumiere-couleur.com/2009/01/25/a8min_php/

WordPressなしでも実行できるようになりましたで、これまで作った単体のツールなんかにもペタペタとバナーを貼り続けています。

別機能として、同一サーバー上にある別のA8minで設定したコードデータ(バナーのHTMLデータ)を共有できるようにしました。
これもまた、私が欲しいだけの機能かもしれませんが・・・

CMS プログラミング

WordPress2.7で長すぎる投稿が表示されない不具合の原因と対策

Published by:

shortcodes
このドイツ語のブログでやっと原因と修正方法が分かりました。
几帳面にも、問題の正規表現の図解で解説までつけてくれたドイツ人に感謝。
それにつけても、やっぱりドイツ人てすげぇ・・・

 現象

そもそもの問題の現象ですが、WordPress2.7で長めの投稿をすると、何も表示されなくなるということが起こりました。
最初はプラグインを疑って利用停止したりしたのですが、それでも改善しません。

WordPressにはデフォルトでいくつかのフィルター(記事の内容に対して行われるコンテンツの更新機能)がありますが、途中のフィルターまではちゃんと動作している。
一つずつ確認していったところ、wpautopフィルターでコンテンツが削除されていることが分かりました。

wpautopフィルターの問題箇所を探していくと、下記の最終行で削除されています。

wpautop関数:
$pee = preg_replace('/<p>s*?(' . get_shortcode_regex() . ')s*</p>/s', '$1', $pee); // don't auto-p wrap shortcodes that stand alone

ここまできてGoogleで検索して確認しましたが、WordPress2.5.1のときからこの行に関しては問題を起こしていたようで、対応としてはコメントアウトする(臭いものにふたをする)というものばかり。

・・・で、件のブログを見つけました。

原因

ドイツ語ブログで書かれているとおり、本当の問題はショートコード(画像のキャプションなどを[caption] ~[/caption]のように記述する記法)用の正規表現を定義したget_shortcode_regex関数(wp-includes/shortcodes.php)にありました。

get_shortcode_regex関数(修正前):
return '[('.$tagregexp.')b(.*?)(?:(/)?](?:(.+?)[/1])?';

wpautop関数もそうですが、get_shortcode_regex関数もほとんどプログラム効率無視なコードになっていて、貪欲な正規表現によってpreg_replace関数が悲鳴を上げたのが原因のようでした。

対策

対策は、問題のget_shortcode_regex関数内のコードを修正すること。

get_shortcode_regex関数(修正後):
return '[('.$tagregexp.')b([^]]*?)(/)?](?:(.+?)[/1])?';

おおおっ!動いた~(T  T
プログラミングに国境なし、を改めて感じました。

#追記
次のバージョンで修正が消されるといやなので、WordPressサイトにバグ報告しました。
#再追記
と思ったら、http://trac.wordpress.org/ticket/8553とduplicateでしたorz
#2009/2/14 追記
WordPress2.7.1で直ってなかったので、自動アップグレードで元に戻ってしまった。
ぐはあ。

発表、ニュース

A8minでA8.net+WordPressの簡単連携

Published by:

最近いくつかのサイトを公開したので、一つアフィリエイトのバナーでも付けようと思い、アフィリエイトサービスのA8.netへ登録してみました。

、が、面倒くさい!!
1つずつ広告プログラムを検索したり登録するのは仕方ないですが、それをWordPressに反映しようとすると、1つずつバナーを選んでコピーしてペーストして・・・というのを際限なく行わなければいけません。

何かいいツールをが無いかと探してみましたが、まるでありません。
ということで作りました!
自分で言うのもなんですが、かなりの力作です! 

A8min -WordPressプラグイン

くわしくはリンク先のページを見てみてください。