WordPress メルマガ用ランダム記事一覧

WordPress の Contact Form 7 プラグインでスパム回避のために Akismet を連携させてみた

WordPress 意外と知らない投稿一覧の利用方法

WPtouch Mobile Pluginでショートコードが実行されない

[WordPress] 「Contact Form 7」で完了ページを表示させる

WordPress O2 ビジネステーマのグローバルメニューのサブメニュー幅が足りないときの対処方法

[PHP] WordPressのプラグインを作ろう(4)

[WordPress] 「Contact Form 7」で入力制限をカスタマイズする


WordPress の Contact Form 7 プラグインでスパム回避のために Akismet を連携させてみた

プロが教える WordPress セミナー開催中!

背景

最近会社のサイトに設置した Contact Form 7 で作られている問い合わせフォームへのスパムが1日に10数通届くというメンドクサイ状況になっていました。

解決方法

さすがに手動でスパム判定するのも面倒ですので、何か仕組みを作ろうと思って最初に取り組んだのが、Akismet との連携です。

Akismet は WordPress に標準で組み込まれているスパムフィルターのプラグインです。
プラグインを有効化し、WordPress.com で取得した API キーを設定するだけで利用できます。

組み込む手順

Contact Form 7 で Akismet と連携できる項目は、
「送信者の名前(author)」「送信者のメールアドレス(author_email)」「送信者の URL(author_url)」の3つです。

これらをフォームのタグに指定していきます。

  1. WordPress の「お問い合わせ|コンタクトフォーム」メニューから、編集したいフォームを選択します。
  2. フォームのタグに、オプションを追記します。
    例)

    名前のチェック:[text* your-name akismet:author]
    メールのチェック:[email* your-email akismet:author_email]
    URL のチェック:[text your-url akismet:author_url]
    

この機能がきちんと動いているかテストするためには、送信者に「viagra-test-123」を指定します。

参考:本家の説明

注意点

このオプションを指定した場合、「akismet:」で指定した項目はすべて Akismet に一度送られます。
そのため、送信ボタンを押してから反応が返ってくるのに時間がかかる場合があります。

まとめ

Akismet をスパムフィルターに利用する事で、最近増えてきた日本語でのスパムなどにも対応できました。
パフォーマンスに影響を及ぼすオプションですが、用途に合わせて適宜利用するのが良いと思います。

WordPress 意外と知らない投稿一覧の利用方法

プロが教える WordPress セミナー開催中!

ブログなどを日々更新していると、記事が増え、過去の記事を探したり一覧化するとき意外と見づらかったりします。
そんな時には、表示項目を変更したり、検索をうまく利用すると一覧機能が有効に使えると思います。

表示項目を変更する

img1

・ 右上のタブ「表示オプション」をクリックする
・ 下画像の表示する項目のチェックで制御できます

記事の検索をする

img2

・ フリー文字で検索する
・ カテゴリや日付で検索
・ 一覧のタイトルなどで並び順の変更もできます

※ 今回お客様より質問を受け、この方法をお知らせしました。
自分では当たり前だと思っていることが、お客様の悩みだったりするということが実感しました。

WPtouch Mobile Pluginでショートコードが実行されない

WordPressのサイトをスマホ用サイトにする場合に多く利用されているプラグインWPtouch Mobile Plugin
私も利用しているのですが、固定ページで記述しているショートコードが実行されない問題が発生しました。

確認画面を見ると、[shortcodemei]とショートコードの記述そのまま表示されてしまっていました。

理由は、テーマフォルダのfunctions.phpに記述したショートコード用の処理は実行されないようです。

対策としては、ショートコード部分をプラグイン化するだけで、簡単に表示することが出来ます。

functions.phpに記述された、ショートコードの処理をプラグインにする方法は、別途紹介を致します。

メモで記述致しました。

[WordPress] 「Contact Form 7」で完了ページを表示させる

「Contact Form 7」を使って、送信完了時に「ご登録ありがとうございました。」等の完了ページを表示させてたいと思います。
今回ご紹介する方法は、あらかじめ作成した完了ページ(別の固定ページ)へ送信(登録)ボタン押下後に自動遷移するといった内容です。
※フォームから送信(登録)した場合のみに表示させるようなものではありません。(直リンクで見えちゃいます)

  1. [お問い合わせ]メニューから、完了ページを設定したいフォームの設定画面を開きます
  2. 設定画面の最下部にある[その他の設定]に下記のような形式で完了ページのURLを記述します
    on_sent_ok: "location = 'http://完了ページのURL';"
    

 
これだけでOKです!
フォームの送信(登録)ボタン押下後に指定した完了ページに移動します。
※「?」を使って、GETパラメータ付きのURLも指定できますよ。

WordPress O2 ビジネステーマのグローバルメニューのサブメニュー幅が足りないときの対処方法

この記事を書いた背景

WordPress のテーマ機能を使うと様々なテーマが利用できますが、
有名どころの一つに O2 ビジネステーマがあります。

参考:O2ビジネステーマ

しかし、ここのテーマの中には、グローバルメニューのサブメニュー部分が表示されたとき、幅が足りないことがあります。

O2ビジネステーマのサブメニュー

その対処方法についてのメモ。

原因

CSS で幅が固定されているのが原因です。

対処方法

CSS を変更してしまいましょう。

私の場合は、Jetpack プラグインの機能を使いました。
「外観|CSS 編集」メニューを開き、下記の CSS を追加してお終いです。

nav#mainNav ul li li {
    width: 280px;
}

対象のメニュー幅の「width」属性を固定値でピクセル指定しました。

メニュー幅なので、本来は動的にするなどが必要かとは思いますが、まずは見えることを前提にすれば上記のような方法でも問題は少ないでしょう。

まとめ

WordPress のデザインはどのようなこともできますが、その分作り手のスキルにとても依存しやすいと言えます。

WordPress を使えば SEO 対策がバッチリとか言うのはかなり表現としては微妙なので、鵜呑みにしないでくださいね。

正しく設定すれば が条件です。

[PHP] WordPressのプラグインを作ろう(4)

管理画面で設定メニューにページを追加できたので、今度は提供されている機能で値を保存してみよう。
WordPress内で値を保存する場合は、PHPのセッション変数をイメージするとよいかもしれない。

更新はちょっと置いておいて、まずは参照/追加/削除を実装してみよう。

//参照はこんな感じで変数に入れたりします
$value	 = get_option('キーワード');

//追加はプラグイン有効化に実行するのが一般的です
register_activation_hook( __FILE__, 'add_settings' );
function add_settings()
{
	add_option('キーワード', 初期値);
}

//削除もプラグイン無効化に実行してあげましょう
register_deactivation_hook( __FILE__, 'del_settings');
function del_settings()
{
	delete_option('キーワード');
}

有効化で初期値入れているから、実際の処理部分も実装できるよ。
無効化時に設定のゴミは消してあげましょう。
※無効化で設定消えちゃうの困るかもしれないけど、設定値のゴミが残り続けてWordPress本体に負荷をかけることになります。

[WordPress] 「Contact Form 7」で入力制限をカスタマイズする

「Contact Form 7」には標準で入力制限の機能があります。
例えば、メールアドレスの入力項目に対して、メールアドレスの形式では無い文字列を入力すると、「メールアドレスの形式が正しくないようです。」とこのようにエラーしてくれるわけです。
 
この内容はWordPressのAPIやPHP(プログラム言語)の知識が必要な内容です。
 
 
「Contact Form 7」では、この入力制限の項目をフィルターフックを使ってカスタマイズできます。
※「Contact Form 7」のバージョンアップが 3.4 以降から利用可能です。

  • wpcf7_is_email
  • wpcf7_is_url
  • wpcf7_is_tel
  • wpcf7_is_number
  • wpcf7_is_date

カスタマイズする方法は、以下のコードをお使いのテーマの functions.php ファイルに追加することでカスタマイズできます。
(例:メールアドレスを「@dreamhive.co.jp」以外は許可しない)

add_filter( 'wpcf7_is_email', 'custom_wpcf7_is_email',10,2);
function custom_wpcf7_is_email( $result, $email ) {
	$result = preg_match('/^.+\@dreamhive.co.jp$/', $email );
	return $result;
}

あなたの IT の疑問・不安をすべて解決するコンシェルジュ サービス