Skip to content

Categories:

カスタム投稿とカスタム分類で絞り込み検索

少し躓いたのでメモ。

カスタム投稿とカスタム分類を使った場合の絞り込み検索の方法。
良く検証していないので、どこかで何かあるかもしれないけど。。。

今回のやりたかった事

カスタムポストを作り、タクソノミー(ターム)でカテゴリ分け。
各投稿にはカスタムフィールドを持ち、検索の際には

1.カテゴリで絞り込み
2.キーワード(カスタムフィールドのデータ含み)

ができるようにする。

とまぁ要はカテゴリで絞り込み検索なわけなんですが
これがカスタム分類を使っているとどーもうまくいかない。
というか、検索してもあまり情報が無い。

カスタム投稿に関する情報は結構あるのに、タクソノミーとタームに関してはあまり情報が無い…

当初はWP Custom Fields Search

という絞り込み用検索プラグインで簡単にできるかな~とか思っていたのですが、どうやらこのプラグインだいぶ前に更新が止まっているようで
タクソノミーに対応していない。

コチラのエントリーでそれらしい事をしているようですが、自分には出来ませんでした。
カスタム投稿をプラグインで設定しているから紐付けがうまく入ってないのでしょうか…???

Taxonomy Picker

上記のプラグインでかなり近い事が出来たのですが
タームを指定していない状態でキーワードを入れて検索すると、全記事(通常のpostも)含めて検索されてしまう
という部分で実現出来ませんでした。

出来ないのか!!と諦めかけたんですが
検索時のURLのパラメーターを直打ちで

http ://xxxx/wp/?s=キーワード&post_type=ポストタイプスラッグ&video-cat=タームスラッグ

と打ち込むとその条件で記事が出る!でもやり方がわかんねぇ!
そんなこんなで色々引用し、四苦八苦しながら作成したのが下記ソース。


<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">

<p>・キーワード入力<br /><input type="text" name="s"  id="s"></p>

	<!--1.投稿タイプをvalueに指定↓-->
<p>・カテゴリー選択<br /><input type="hidden" name="ポストタイプ名" value="manege" />

		<!--2.nameにはカスタム分類名↓-->
		<select id="cat" class="postform" name="タクソノミー名">
		<option class="level-0" value="">全て</option>

		<!--3.get_termsでカスタム分類情報を取得 optionに書き出す↓-->
		<?php
		$home = site_url('/');
		$tname = get_terms( 'manege-cat', 'order=ASC' );
		    foreach ( $tname as $term ) {
		    echo '<option class="level-0" value="'. $term->slug .'">'. esc_html($term->name) .'</option>';
		     }
		?>

		</select></p>

<input type="submit" id="searchsubmit" value="検索する" />
</form>

使用しているプラグインは

・Custom Post Type UI (カスタムポスト&タクソノミーの設定)
・Advanced Custom Fields (カスタムフィールドの設定)
・Custom Post Type Permalinks (カスタムポストのパーマリンク設定)
・Custom Post Type Category Pagination Fix (ページングのバグ回避)
・Search Everything (検索範囲拡張)

1.まず、hiddenでポストタイプを設定。
2.selectのnameをタクソノミー名に
3.get_termsで指定したタクソノミーのタームスラッグを取得。valueにスラッグを設定

これでタクソノミーでの絞り込みが出来ます(できてるはずできてるはずできてるは

出来て忘れてない内に!と書いたので、確認が十分出来ていませんが、検索結果のテンプレートの方を
ポストタイプ別に色々指定すればいいのでは無いだろかと思っています。

お客に使わせる際に、カスタムポストはすごく簡単になるのでその辺はすごく良いのですが…
この辺の仕様がまだフンワリとしているので、なかなか難しいですね。。。

Posted in web.


携帯変えたった

 

このブログはまだWPの事をよくわかっていない時に作ったので、なんかもー色々カオスだったので
2.7から3.3へ一気にアップデートしました!デザインもテンプレートを適当にダウンロードしたので
そのうち作りなおさないと…

さて、久々な更新は機種変なお話です。

時代はスマホだっ!とノリで去年IS03を購入したわけですが
色々問題が多いこの機種。(主にバッテリー)

約一年使用した感想は…

「もう一年使うのはつれー…」

という事でした(汗)

なんかもう、常に充電していなければいけないくらい。
さすがに言い過ぎですが、サイト構築とかしてたらリアルに1日2~3回は充電してました。

お前は生命維持装置が繋がったおじいちゃんか?!

そんな感じです。
もしくは、単三電池6本で3時間駆動しかしない、携帯ゲーム機としてのアドバンテージが無いゲームギア。

このIS03。ここ最近売られている端末が
1500mA~1700mA
ほどの電池容量を持っているのに対して

1000mA前後

しか持っておりません。何かよく分かりませんが、ダメなのは伝わりますよね?!

最近発売されている端末を触ってみると

びっくりするぐらいヌルサクで、電池の持ち等も雲泥の差のようです。

「android au」
などと掲げて、ゴリ押したこのIS03ですが
初期端末のため、4.0はもちろん2.3にもアップデートされない始末。

「もうこれやだ…!!」

と思っていた矢先、ネットにて

「ISW12HT EVO 3D がAUショップにて投げ売り状態!!」

という記事を見ました。2012年夏モデルに向けての在庫処分でしょうか?
とにかくIS03以外であればなんでも良いと思っていたので、調べて見たところ

どうもこの機種。評価が高いようで。

・WiMAX機(感度はいまいちのよう)
・大容量バッテリー
・サクサク
・android4.0へのアプデの期待大

レビューサイト等でも、マイナスなレビューが数える程という感じでした。

これはひょっとしたら良い感じなんじゃないのか??

と期待を込め、早速auショップに行ってみました。

そして値段を確認すると確かに機種変が10,000円で出来る!!
しかし、なんだか最近の機種変ってすっげーややこしいですよね?なんとか割がどーで、2年以内違約金がどーとか…
ポップ等を見てもさっぱり理解出来ないので、お店の人に聞く事に。結果としては

1.端末を2年使用する前提の毎月割りが消える。
(これ白ロム持ち込みなら消えないそうな)

2.よって、月々のIS03端末代に+1,500円

3.今回の新端末は、一括で購入するのでペナルティは特になし。

うーん…月1,500プラスかー…まぁ
「IS03を買ってしまいましたすみませんでしたプラン」
として捉えれば…と、自虐的な感じになっていると

「今キャンペーンで、25歳以下限定で2年間1,050円引きのキャンペーンをやっていますよ!」

というなんともピンポイントなキャンペーンが!!
早生まれで良かった!友達が原付にまたがってる時、必死こいてチャリで追いかけた苦労がここに来てやっと報われるのか!!!

てな訳で「IS03を買ってしまいましたすみませんでしたプラン」は、月々500円プラスで済む事に.

機種代もポイント3,000円を使用。んで何か抽選したら現金2,000円当たりました。
てな訳で、5,000円程で機種変が出来ました!!

んでそのEVO 3Dですが。。。

素晴らしい。
さっくさくです。少しパネルの感度が良すぎる気もしますが。
デフォルトのホームアプリがかなり綺麗なインターフェースで見た目も大満足です。

ただこの機種。異様なほどにケースが売ってない…!古いというのもあるのですが…
iPhoneケースは腐るほど置いてあるのに!
てな訳でアマゾンでこれを購入
届くのが楽しみです。

さて、問題のバッテリーの持ちなのですが、たぶん僕スマホの運用方法自体を間違ってましたね。
(まぁでもIS03はありえないけど)
よく、まとめサイトとかでオートキル系のアプリをオススメされているので、導入している方もいると思うのですが
まず前提に、俗に言うゾンビアプリというモノは除外するというのがあります。まーこれはいいんですが

「2.3以降、オートキルなどをしなくても良いようになっている!むしろまたタスク立ち上がりバッテリー持ちが悪くなる」

というのもチラホラ見ました。どっちなんじゃい!って事でなんですがどうやら後者が正解のような感じです。
何故こんな曖昧な言い方かと言うと、オートキル系も「本当に正しく設定していれば有効」な感じがするからです。
勝手に立ち上がるアプリをキチンと探し当てるのが面倒くさい。いまいちわかりづらい。そしてあってるかわからない。
キチンと情報を持って運用すればかなり有効ですが、中々むずかしいですね。

設定がうまくできていないと、オートキル自体が非常にバッテリーを喰います。バッテリーMIXなどの監視アプリでグラフ化すると
一目瞭然です。具体的なバッテリー持ちは

■オートキル有効… 20時間弱(-4~5p/h)
■なし…30時間強(-1~2p/h)

といった感じです。もちろん、なしの状態でも、通信などの量にも左右されます。スマホの運用って難しいなぁと。
まぁでもIS03に比べればまったく問題ありません。

そんな感じでつらつらと書きましたが、かなり満足してますね!買ってよかった!!

もうすでにauの夏モデルは発表されていますが、こっちもすごい進化してるんでしょうね。
 

Posted in 未分類.


Googleの貼り付けマップがIEで表示できない?

ちょっと詰まった事をメモ。

今回の案件もWP。
んで、お客のほうで、工場の紹介ページを持ちたいとの事で
カテゴリーを作り、工場の写真だとか、住所だとかを記載した
記事を作れるようにしたわけです。

んで、そのページに、カスタムフィールドでGoogleマップの貼り付けタグを
記載出来るフィールドを持たせた訳です。

恐らく、使うユーザーは年配だろうからとにかく簡単に、クリック操作だけで完結出来るように組んでいきました。
貼り付けタグをコピーして張り付けるくらいの作業だったら出来るでしょうから。

んで、公開前の校正で問題が

IE9で地図が表示出来ない。

工場の位置とかをマーカーで記載していたのですが、そのマーカーが表示出来ない。

具体的には

「表示が出来る事があるんだけど、割と高確率で表示が出来ない」
「マーカーが表示されないと、まず地図の操作(ドラッグとか)が一切出来ない」
という何ともチンプンな状態でした。
GoogleのFAQには

キャッシュを消してくださいだとか、ダイレクトエックスが悪いんじゃね?
みたいな、どうもいまいち的を得ていない回答。

実際に、CTRL+F5でスーパーリロードをかけるとその時だけは表示されるのです。
(その後更新したら駄目)

つか、相手は「ブラウザ??」っていうような人なので

「スーパーリロードをかければ表示されます!!!」

なんてドヤ顔で言ってもしかたありません。

調べていく内にどーも同じ状態になっている人がたくさんいるようで↓

http://www.google.com/support/forum/p/maps/thread?tid=4f275fdec0d8f5cc&hl=ja

んんんんどうしたものか…

Google Maps APIで出来ればこの状態にはならないが…
ただAPIは激しくめんどくさい…
つかそれにしちゃうと納期的に作り変えるのは不可能…
つかそもそもお客も更新出来ない…

詰んだ…

そんな絶望的な状況で

すげーナイスなプラグインがありました。

Google Maps Anywhere

もうコレ知った時は

モーゼが海割って約束の地に連れてってくれるんじゃなかろうか

ぐらいの衝撃を受けましたwww

このプラグイン。
投稿画面に直接マップが表示され、そこにマーカーをセットする事が出来ます!
そして一番のメリットは

kmlファイル(マーカー情報がかかれた、Gmapでエクスポートできるファイル)に対応している!

完璧ですマジで。

これのお陰で何とかOKを貰えました(マニュアル作らな…)

まぁ今回はWPのプラグインで解決出来ましたが、静的サイトではやはりAPIを入れなきゃならんのだろうか…

お願いだからGoogle何とかしてくだせぇ

Posted in web.


GmailのSMTPでお問い合わせフォームを動かす。

えぇつい最近まで妙な案件をしていましたが、先日ついに全て完了しました。
なんて事無いWPを使った企業サイトだった訳ですが。
客先の諸事情などありまして、既存の所にはWPをインストール出来ませんでした(セキュリティが入ったサーバーだった為、直接アップロードも出来ないような環境でした。)
そこそこ規模のある会社で、メールアドレスなどの理由でドメイン移行も出来ない感じ
(僕は途中から携わったのでこの辺はよく分かりませんが)

んで、最終的に
1.新規にサーバーをレンタルし、そこにWPを構築。
2.ドメインに転送設定をし、アクセスしてきたらWPがあるサーバーに行くようにする
(これはサーバー側のお仕事)

という感じだったのですが、色々と問題ありでした…
とりあえずサーバー2回変わりましたから!(え

僕が携わったのは、一番最初のサーバー移行からでした。
何かしらの要求が満たせなかったらしく、ほぼレイアウトなどは出来上がっている
WPを別サーバーに移行、んで続きの修正など。というのが僕の引継ぎ内容だった訳です。

移行自体は何の問題も無く、残りのページもさくっと作っていった訳です。
んで、いざ客に確認してもらうと、メールフォームが届かない事が判明。

テストで、自分の社内アドレスで運用している時にはまったく問題が無かったのですが
何故か転送先を客のアドレスにすると届かない。。。
迷惑メールフォルダにも、サーバーにも弾かれている様子はありません。

んで、どうやら、サーバーの契約の際に

新たに借りたサーバーにも同じドメインを設定して契約していた事が判明。

要するに、
XXXXXX.comというドメインを持ったサーバー2個ある
という状態になってしまっていたそうな。

本来なら、新規サーバーのsendmailから飛んだメールは、客先のメールサーバーに届かないといけない訳です。

しかし、同じドメインを新規サーバーに設定してしまっている為
sendmailは、旧サーバーには行かず新規サーバーを参照してしまっている。

もちろん、そんなメールアドレスは新規サーバーには存在しないのでエラー

エラー→再送→参照→エラー→再送…∞

という動きをしていたそうな。
ううん何か複雑で色々端折ったのでうまく説明出来てるか怪しい。。

んで、ここで2回目のサーバー移行…(汗)

たった三項目のメールフォームの為に…という感じでした。
(でもドメイン情報が世の中に2個あるのがまず問題ですし)

んで、解約した後もしばらくは新規サーバーのDNSに情報が残ってしまう。
しかし、公開日を遅らせる事は出来ない!!

てな訳で、タイトルにある「GmailのSMTPを使ってメールフォームを動かす!」という話になる訳です!前置きなげーww

これを可能にするのが

Cimy Swift SMTP

というプラグイン。設定も簡単で、Gmail運用も想定されているので、設定はGmailアドレスとパスワードのみ設定すればOKです。

このプラグイン+メールフォームプラグインで

メールフォームから送られたメールは、一度Gmailに行き、Gmailから送信される事になります。

しかし、個人サイトならこのままで良いのですが、企業サイトがGmailアドレスから返信するのは良くありません。
どうしたものかと色々探っていると

Gmailは送信するアドレスも変更できる事が分かりました!

便利すぎるぞGoogle!!!
作成したメールアドレスのアカウント設定から、送信元メールアドレスを登録します。

この設定をすると送信元メールアドレスに確認メールが飛びます。

この確認メールに記載されいる承認コードを再びアカウント設定の方に登録。

これで送信自体はGmailだけど、送信されるアドレスは客先のメールアドレス
という、ユーザーにはまったく意識させず、丸く収まる状態が出来上がりました!

いやーGoogle便利ね~。

とりあえず、コレのお陰で何とか納品日を遅らせなくて済みました。
先日、DNSの方も情報が削除され、これでしっかりと想定した形になりました。

いやもうインフラ関係になるとさぱーり…今回も、元SEな方が状況を見てくれなければ
本気で積んでた所でした。

Posted in web.


ワードプレス 自分中でのまとめ

えー最近、ワードプレスを使ってコーポレートサイトを作る機会が多い僕ですこんばんわ。

というか、新しい職場に入ってからWPしか触ってません。
社内では「WPでコーポレートサイトを作る君」みたいな位置づけになっちゃってます僕。。。

とまぁ何かネガティブな感じにしちゃいましたが、WPってCMSとしてかなり優秀だなっと
経験を積むたびに思います。

「こんな感じの事をしたい!」という事が、調べれば何かしらの方法で出来る。

そんな感じです。

そんな訳で、BON休みも暇なので、WPについて色々まとめ。

■プラグイン
WPの一番の強みは何といっても豊富なプラグイン。まず基本的に入れる事になるであろうプラグインを列挙。

1.PHP Execution


固定ページでもphpが動くようにするプラグイン。

個人的に必須だと思います。画像のパスを引っ張ったり、特定の部分で記事をひっぱったり…etc
他にも種類があるようですが、自分的にはコレが一番導入しやすいかと。

2.Custom Field Template pluginGet Custom Field Values


カスタムフィールドを投稿画面に追加するプラグイン。
前者がフィールド設定。後者が取得用です。

お客さんが更新をする前提のサイトで、記事のレイアウトが決まっている場合に有効でしょう。
画像はココ。この文言はココ。みたいな感じであれば、フィールドを作り、テンプレートファイルに吐き出すためのコードを指定しておけば、使うユーザーはhtml等気にしなくて済みます。

記事中の情報を、何かしらのフォームに入力しなければならない時などにも使えて
工夫次第で、とても良いCMSになるかもしれません。

後者のプラグインの取得方法はコチラを参照

3.WP-PageNavi


ページナビゲーションを簡単につけるプラグイン。

記事一覧などで1.2.3…というリンクを付けれます。WPのデフォルトは
「次へ」「前へ」という形なので、コレを使った方が使い勝手も見栄えも良いかと。
記事を取得するループの外の直下にコード<?php wp_pagenavi()?>を書くと簡単に実装できます。

ただ、ひとつ問題点が。
固定ページで使う時には一工夫しないと、正常に動作しません。
ループ部分のquery_postsに
<?php query_posts(‘cat=表示するカテゴリナンバー&posts_per_page=表示させたい件数&paged=’.$paged); ?>

という形で書かなければなりません。詳しい事は小難しくて良く分からないのですが(え)paged=’.$pagedという記述がミソのようです。

4.inquiry-form-creator


高機能なフォームを簡単に実装するプラグイン

フォーム設置プラグインでは「Contact Form 7」というプラグインがポピュラーみたいですが、このプラグインの特徴は何といっても

超簡単に超高機能なフォームが設置出来る!(しかも確認画面&返信設定付き)

インストール後、管理画面にて設定をするのですが

・郵便番号から住所自動挿入
・文字列チェック(数・形式)
・メルアドチェック(ドメイン制限付)
・自動返信設定(管理者/ユーザー)

など、その他諸々を設定する事が出来ます。そして何より日本語です。すばらすぃ。
これをデフォルトにすれば良いのにと、もう何かベタぼめですがwww

デザイナーにとって、プログラムの

/*—ココから先は編集しないでください—*/

というPGさんのコメントだったり(吐き出すのはそのタグじゃないんだ!)
置いた瞬間Internal Server Errorなど、ハイパー欝なあるあるネタだと思いますがw

このプラグインでそゆーのを少しでも減らせるといいのかなぁっと。

5.Ktai-styleWPTouch


前者がガラケー、後者がスマホ対応にするプラグイン。

携帯対応にして欲しいという要望はけっこー上がるので、その際に。

ガラケーページに関しては、一応固定ページとかを吐き出してくれるんですが、コーポレートサイトでは、1ページの文字数がかなり多くなるので、結局は携帯用の個別ページを別個に作るって形になると思いますが…。ともあれ、テンプレートなど、土台部分が作りやすくなるので、まぁ必須かなぁっと。

WPに限った事ではありませんが、「モバイルサイト」という物は何でこんなにめんどくせぃのでしょうw
過去に大きめなモバイルサイトに携わった事がありますが、その時も探り探りで
「これあってんの??」って感じでした。
んで今もその時の情報を元に構築していますが、最近のスマホの普及によりガラケーのTipsという物にあまり触れる機会がありません。その癖、機種自体は勝手に高機能になりやがります。あぁコレが「ガラケー」という物か…

話それまくりましたが。。。

貧相になりがちなモバイルサイトなので、アイコンや画像で見栄えを良くしたいですが
このプラグインを普通に使った場合、固定ページに画像を指定するとリンクになってしまいます(テンプレに書き込むと普通に表示されますが)

これを回避するには
http://bloggingfrom.tv/wp/2008/12/23/939を参考に。

<?php
function ks_keep_amazon_image($replace, $orig, $src) {
if (preg_match(‘#^サイトのアドレス/wp-content/plugins/ktai-style/themes/classic/img/#’, $src)) {
$replace = $orig;
}
return $replace;
}
add_filter(‘image_to_link/ktai_style.php’, ‘ks_keep_amazon_image’, 10,3);
?>

という物をfunctions.phpに記載すると、画像が表示されます。
上記サイトでは、amazonの画像を表示するためのTipsとして紹介されていましたが
リンクに変更される部分を表示させたい画像のurlにすればいけるんじゃないか??と思い試してみたら上手く行き、社内で一人ガッツポーズを取ってしまいましたwww

後者のプラグインは、入れた瞬間に綺麗にスマホ対応になります。
固定ページの情報(テキスト・画像など)も綺麗に出力されるので便利です。
ただ、このプラグイン英語なので、テンプレートファイルとか凄くワケワカメです。
これはもう少し勉強すれば使いこなせるのになぁーと感じています。

余談ですが、最近このプラグインがクラッカーによってバックドアを仕掛けられていたというなんとも怖いお話がありました。レンタルサーバーなどでは、強制的にアップデートをかけるなどの対処をした所もあるみたいですが(お陰でテーマファイルが消えてた事が…)
該当するverの人はアプデを。

■カスタム投稿タイプをうまく使う

カスタム投稿タイプというのは、まー簡単に言うと
「まったく新規の投稿方法を定義する」
って感じでいいんでしょうか(自信が無い…)

また、従来のカテゴリーの役割を

「カスタム分類(タクソノミー)」
と呼びます。

小さな規模のサイトではあまり使う必要は無いでしょうが
カテゴリーが膨大だったり、記事毎にレイアウトが特殊だったりと
扱う情報数が大きくなる場合には非常に有効です。

導入方法としては、プラグインが一番簡単なのですが

もしパーマリンク設定もプラグインで制御していたりすると
色々とめんどくさいので、個人的にはfunction.phpに記述する方法のが確実かなぁと思います。

記述方法はコチラが参考になります

この方法はまだ一案件でしか試していないのですが、たぶんこの機能をフル活用すれば
かなり大規模なサイトでも構築可になるんじゃないでしょうか。(テンプレートも自由に定義出来るので)

これを使ってかつ、パーマリンクの設定をする場合は、パーマリンク用のプラグインを使うと上手くいくのですが
前案件では、サーバーの種類がIIS(インフラ関係はよくわかんないけどWindowsサーバーみたいです)で少しハマりました。

パーマリンクでの書き換えはサーバーの「mod_rewrite」というモジュールを使って行っているようなのですが
IISのサーバーではそれがありません。その代わりに「URL Rewrite Module」という物を使って同じような動作を再現できます。

参考はコチラ
web.configに上記中のコードを書き込みアップ。

んで、固定ページなどはこれで正常にリンクを吐き出してくれるのですが、カスタム投稿で定義したページに関してはどうしても上手くいきませんでした。恐らくですが、パーマリンク設定のプラグインが、このweb.configを使えないのではないかと…
パーマリンク用のプラグインは、設定後、.htaccessを更新するのですが、まずIISは.htaccessは使えないみたいだし…ていうかまず、レンタルサーバーだからそのフォルダの権限無いし…
てな感じで、前案件ではパーマリンクを設定出来ずじまいでした…いやもうインフラ関係になってくると俺の範囲外でしょうよ(汗)これだけが心残りな案件でした。

んーーーーー。
何か自分の中で整理しようとしたのですが半分も出来なかったwww
んまー日々精進ですなぁ。このブログも無知な時に作ってしまったので近いうちに作り直したいなぁ

Posted in web.