blog

WordPressサイト内検索で濁点あり/なしがうまく検索できない

WordPressのサイト内検索で、「ワードプレス」って検索したら「ワートプレス」も引っかかります。(例えが悪い)

A.11. MySQL 5.6 FAQ: MySQL の中国語、日本語、および韓国語の文字セット

この辺りを読んでおこうと思う。

/*LIKEを*/
 SELECT * FROM wp_posts WHERE post_title LIKE '%ワードプレス%' AND post_type = 'post'

/*LIKE BINARYに*/
 SELECT * FROM wp_posts WHERE post_title LIKE BINARY '%ワードプレス%' AND post_type = 'post'

WordPressテーマ内に書くなら、こんな感じか。

 

function my_posts_where( $where, $obj ) {
     if ( $obj->is_search ) {
         $where = str_replace( 'LIKE', 'LIKE BINARY', $where );
     }
     return $where;
 }
 add_filter( 'posts_where', 'my_posts_where', 10, 2 );

 

他に方法あったら教えて下さい〜

MW WP Form の”対応状況”に応じて問い合わせ一覧の行背景色を変える

MW WP Form !

最近WordPressでお問い合わせフォームを設置する場合、MW WP Formをよく使います。

Contact Form 7と同じく、フォーム設定をして指定のショートコードを固定ページ等に貼付けるスタイルのお問い合わせフォームプラグインです。


 

プラグインサポートページあり

フォームの設定方法についてプラグイン作者様が公開して下さっているのがとてもありがたいですね!MW WP Form の使い方 | モンキーレンチ


 

CRM的な使い方できます

MW WP Formをよく使うのは、プラグイン単体でDB保存・対応状況管理ができるところが便利だからです。(設定は必要)

また、問い合わせ状況をグラフ化することもできます。

対応状況管理や、分析。MW WP Formは簡易的なCRMとしても使えますね!


 

問い合わせ一覧を確認

問い合わせ内容をDB保存するようにすると、フォームより送信された問い合わせ内容が「管理画面 -> MW WP Form -> 問い合わせデータ」 で確認できるようになります。

mw

「登録日時」「対応状況」はMW WP Formが追加してくれる


 

問い合わせ担当者が一目で対応状況を確認できないか?

問い合わせが多いサイトの場合、データが増えるにつれて対応忘れが生じてしまうケースがありました。

対応状況が一目で分かる運用はできないか?と考えました。


 

対応状況に応じてそれぞれの行背景色を変えるのはどうか?

投稿や固定ページに関してはColored Admin Post Listを使って「公開済み」「下書き」「レビュー待ち」「非公開」などの投稿ステータスを一目で分かるようにすることができます。

これが使えるかなと思ったのですが、MW WP Formの問い合わせデータには対応させることができません。

MW WP Formの問い合わせデータの”対応状況”は投稿メタ情報として実装されています。

//meta_key = "_mw-wp-form_data"
 array(2) {
 ["response_status"] => string(13) "not-supported"
 ["memo"]=> string(0) ""
 }

Colored Admin Post Listは、投稿一覧のテーブルタグ(tabel)のテーブル行(tr)のクラスに付与される”status-“で始まる投稿ステータスに対してcssで色を付けていました。

この”status-“で始まる投稿ステータスをcssクラスとして付与しているのは、WP_List_Tableクラスを継承したWP_Posts_List_Tableクラスのsingle_rowメソッドでした。

/wp-admin/includes/class-wp-posts-list-table.php

<tr id="post-<?php echo $post->ID; ?>" class="<?php echo implode( ' ', get_post_class( $classes, $post->ID ) ); ?>">

get_post_classメソッドを呼び出しているのでpost_classフィールターで処理すればいけそう。


 

ということで作りました。

functions.phpに貼付けるか、オリジナルプラグインに貼付ければ

mw2

こんな感じで色が変わります。


 

処理内容

MW WP Formの対応状況(投稿メタ:_mw-wp-form_data ->  response_status )に応じて、”stats-“を書き換える。

それだけです。データを更新するわけではないです。

もっといい方法あったら教えて下さい!


 

対応表

MW WP Formの”対応状況” WordPressの投稿ステータス
未対応 下書き
保留 レビュー待ち
対応済み 公開済み

 

あとは、Colored Admin Post Listの設定画面でいい感じに色を調整してみて下さい。

mw3

 

問い合わせ対応忘れでの機会損失なんてバカらしいですもんね。

運用をしっかり考えてサイト制作をしましょー

FC2ブログからWordPressへ引っ越したらコメント文が変?

FC2ブログからWordPressへのお引っ越し

なぜがFC2ブログからの引っ越しのお話が多くあります。なぜか。。。

FC2ブログからWordPressへの引っ越しの方法についてはいろいろ紹介されているのでここではあえて言及しません。

 

とりあえずインポート

FC2ブログから記事バックアップとしてダウンロードしたファイルはMT形式なので、WordPressのインポートツールでWordPressにインポートすることはできました。

記事内の画像URLや、別記事へのリンク書き換え等を済ましてホッとしていたら、コメントが何やらおかしいことに気付きました。

SECRET: 0
 PASS: ********************************
 あああああああああああああああああああ
 あああああああああああああああああああ
 あああああああああああああああああああ

管理者だけに表示を許可する・削除用パスワード

スクリーンショット 2015-05-21 11.29.20

 

なるほど、そういう機能があるのか。と関心していたらこのPtivate(管理者にだけ表示を許可する)って反映されていないんですね。

コメントが数万件あるブログだったのでこれは困りました。

というわけで作りました

Gistから落として、「fc2_comment_clean_4_wordpress.php」WordPressルートフォルダに置いて【あなたのWordPress/fc2_comment_clean_4_wordpress.php】にアクセスして実行下さい。

※データベースのバックアップをしてから実行しましょう。

※終わったら必ず消して下さい。

※自己責任で実行して下さい。

※よく分からない人は誰かに頼みましょう。お仕事、お待ちしてます。

実行内容

  • プライベート設定されているコメントは「承認待ち」にします
  • コメントの公開状態(SECRET: *)、パスワードのハッシュ値(PASS: ******)を消します

これで、管理者にだけ表示するコメントでやり取りしていた内容がWordPressに引っ越し後にだだ漏れになることを防げますね!

Laravelエキスパート養成読本を読みました

Laravel始めたい

PHPのフレームワークの「Laravel」について勉強したいと思い『Laravelエキスパート養成読本』を購入しました。

 

保守中システムのために。。

現在、携わらせて頂いているシステムは開発元会社の独自フレームワークで構築されており、開発元会社とは連絡が付かない状況で機能追加などの開発効率が悪く頭を悩ませています。(独自フレームワークが悪い、というわけではないです。)

早速読んでいく

Laravelについての紹介に続き、サンプルアプリケーションのソースコードに沿ってLaravelでの開発について学ぶ章があったので、早速手環境を準備します。

 

環境構築

ローカル(Mac Book Air)にLaravel環境を構築するにあたり、書籍ではいろいろな環境が紹介されていたのですが、特に指定の環境がなかったのでVirtualBox + Vagrantで構築することにしました。

サンプルアプリケーションは、Laravel4で実装されているとのことなのでその環境に適したものはないかと探していたらドンピシャでLaravel4-Vagrantを見つけました。

ありがたいことに日本語化して下さっているリポジトリも見つけました。

さっそく作業していきます。

Laravel4-Vagrantをクローン

$ git clone git://github.com/HiroKws/Laravel4-Vagrant.git

クローンしたディレクトリに移動

$ cd Laravel4-Vagrant/

仮想マシン起動

$ vagrant up

立ち上がらない

 Bringing machine 'laravel4' up with 'virtualbox' provider...
 ==> laravel4: Box 'precise32' could not be found. Attempting to find and install...
 laravel4: Box Provider: virtualbox
 laravel4: Box Version: >= 0
 ==> laravel4: Adding box 'precise32' (v0) for provider: virtualbox
 laravel4: Downloading: http://files.vagrantup.com/precise32.box
 ==> laravel4: Successfully added box 'precise32' (v0) for 'virtualbox'!
 There are errors in the configuration of this machine. Please fix
 the following errors and try again:

vm:
 * The 'extra' flag on synced folders is now 'mount_options'

Vagrantのバージョン1.3.5からは同期フォルダのオプションはextraじゃなくてmount_optionにするみたい。

参考:Vagrant1.3.5ではconfig.vm.synced_folderのパーミッションをmount_optionsで設定する

ということで、ForkしてきてVagrantfileを書き換えました

 - lv4_config.vm.share_folder("www", "/var/www", "./www", :extra => 'dmode=777,fmode=777')
 + lv4_config.vm.share_folder("www", "/var/www", "./www", mount_options: ["dmode=777", "fmode=777"])

もう一度!仮想マシン起動

$ vagrant up

仮想マシン無事起動した。

サンプルアプリケーションをダウンロード

https://github.com/jumilla/l4-sample-todo/archive/master.zip

解凍して、中身を仮想マシンのWebルートにコピー

/var/www

仮想マシンにログイン

$ vagrant ssh

Webルートに移動

$ cd /var/www/

コンポーザーから依存パッケージを取得

$ sudo composer update

DBの接続情報を変更する

/var/www/app/config/database.php
'mysql' => array(
     'driver' => 'mysql',
     'host' => 'localhost:55556',
     'database' => 'database',
     'username' => 'root',
     'password' => '',
     'charset' => 'utf8',
     'collation' => 'utf8_unicode_ci',
     'prefix' => '',
 ),

Laravel4-VagrantのDB接続情報と初期データベース「database」を記述しておいた。

サンプルアプリケーションが使うテーブルがないのでアルチザンでマイグレート

$ php artisan migrate

http://localhost:55555にアクセス

スクリーンショット 2015-05-14 18.29.48

ちゃんと表示されました!

さー続き読んでいきます。