don-benjamin.co.uk

WP Custom Fields Search
WordPressの絞り込み検索プラグイン。
有料のもの(10万円弱)はあるが、無料で使わせていただけるものは探してみたけどこれくらいしかなかった。
こちら(WP Custom Fields Searchの日本語版配布)に日本語翻訳ファイルがある。
 
一応、入れてみましたが、なかなか大変です。
大変さの大半は、pg4wpというプラグインを入れて、WordPressを PostgreSQLで使っているからで、なんでこんな変態的なことをしているかというと、WPと EC-CUBEの相互乗り入れサイトを制作しているため、EC-CUBE側の性能を出そうとしたら、PostgreSQLしか選択肢がないという、これって罠なんでしょうか。
 
手順としては、wp-custom-fields-searchの extra_search_fields.phpを pgsql用にカスタマイズします。といっても、変えるところは直接 MySQLを呼んでいる mysql_を wpsql_に変えるくらい。
あとは地道にエラーになるケースを pg4wp側の driver_pgsql.phpで潰していきます。
 

/* wp-custom-fields-search.php
   bridges/greatrealestate.php
*/
require_once(dirname(__FILE__).'/extra_search_fields_'.DB_DRIVER.'.php');

もしこういう風に pg4wpの defineを使って MySQLと PostgreSQLで読み込むファイル名を切り替えるつもりだったら、bridges/greatrealestate.phpも忘れずやっておかないとプラグインの読み込みエラーになって、画面が真っ白になるので焦ります。
 

/* pg4wp/driver_pgsql.php */
// ---- MySQLからPostgresqlでエラーになるケースの修正 ----
  $sql = str_replace('.id', '."ID"', $sql);
  $sql = str_replace('(1 AND ', '(true AND ', $sql);
  if( 0 === strpos($sql, 'SELECT') && false !== strpos($sql, '.* FROM') ) {
    $gby = strpos($sql, 'GROUP BY');
    $oby = strpos($sql, 'ORDER BY');
    if ( false !== $gby && false !== $oby ) {
      $sql = substr($sql, 0, $gby).substr($sql, $oby);
    }
  }
  $sql = str_replace("!= ''", " ''", $sql);

PostgreSQLはフィールド名の扱いが大文字と小文字で違うので、wp_posts.IDは wp_post.id では通らず、wp_post.”ID” にしてやらないといけない。(この種のパッチは元から入っているんだけど、なぜかエラーになるので追加)
あと、(1 AND (条件)) が『integerじゃなくて booleanにしろや、ぼけぇ!』ということで通らないので、(true AND (条件))に。
GROUP BYでは項目を指定しないといけないんだけど、SELECT * になっててエラーになるパターンがあるので、これはたぶんマズイだろうと思いつつ、GROUP BYを取るとか。
 


あと、Search Resultに検索キーワードが出なかったので、これを入れたりとか。
 
管理画面でプリセットを定義するときの挙動も少し怪しげ(データフィールドが最初は選択できないなど)なんだけど、この辺りはオイオイ。
 

/* wp-content/db.php */
define( 'PG4WP_DEBUG', true);
define( 'PG4WP_LOG_ERRORS', true);
define( 'PG4WP_LOG', PG4WP_ROOT.'/logs/');

デバッグ中はこのあたりを trueにしておくと wp-content/plugins/pg4wp/logsにいろいろとログを書いてくれるので便利。このディレクトリには、www-dataユーザでパーミッションを出しておくこと。(デバッグ中だけだから、chmod 777でいいかも)

twitter

←こういうのって、よく見かけますよね。
あれって面倒臭いんじゃないかなと思っていたら、思いのほか簡単だったので、やり方を簡単に。
 
ちなみに、これって自分のツィートだけじゃなくて他人のIDでも作れちゃいます。意味があるかどうかわかりませんけど。
 
ここ(Twitter活用術 › ウィジェット › ウェブサイトのプロフィールウィジェット)にID入れるだけ。
ここで出てくる javascriptのコードを表示したい場所に<div>かなにかに入れて貼りつけるだけでOKです。簡単ですね。

WordPressでは jQuery は、Prototype など $ 関数を使用する他のライブラリと同時に使用することを想定して、jQuery.noConflict() が実行されており、$ 関数はそのまま使えません。
まぁ、$を使うべきところを jQuery と書けばいいだけなんで、いいっちゃいいんですが、字数も 1文字から 6文字に増えて面倒です。
そういうときは先人の知恵でよくわからずに、こうやって $を使っていたんですが、・・・


  jQuery(function($) {
    $("div > p").click(function() {
      $(this).slideUp("slow");
    });
  });

stacktrace

ちゃんとわかろうと思って、いろいろググって勉強してみました。
こちら(jQueryと他のライブラリを同時に使用する方法)です。勉強になります。

scrollsmoothly

いままで食わず嫌い(シュルシュルシュルってスクロールして何が楽しんじゃい?!)していたスムーズスクロールですが、縦幅3400pxもあるページをデザインしていて、一番下からすぐ上にページが切り替わっても、ありがたみがないんじゃないかと思って、使ってみることにしました。
 
使ってみたのは、こちら(こだわりのページ内リンクスムーズスクロール scrollsmoothly.js)。
設置簡単、指定いらず、依存ライブラリなしと、いまのところ言うことなし。ありがとうございます。

そんなに難しいことをしようと思ったわけではなく、ホームページ・ビルダーにおまけで付いてくるウェブ・アニメータ程度のことができればいいかなと思って、調べたら意外とやさしく書いてあるところがなかったので、超簡単な導入部だけメモしておきます。

1.まず、PhotoShopで新規ページを開きます。画像がある場合はそれを開けばいいです。
2.ウィンドウでアニメーションを表示させます。そうするとアニメーションのウィンドウが画面下に出てくるはず。

3.最初、アニメーション・ウィンドウはタイムラインになっていると思いますので、画面右下のアイコンをクリックして、フレームにしておきます。

4.あとは、この画像のアイコンをクリックするとフレームがコピーされますから、フレームごとに表示するものを変えていけばOKです。レイヤーで制御(表示・非表示や移動など)するということです。
have a nice animation!
 
GIFアニメーションの作成はやさしく書いてあって参考になりました。

久々に最新版の WordPress(MUじゃないシングル版の方)に触ったら、いろいろ忘れてて焦った。

  • 画像のアップロードがエラーになった。 ・・・ wp-content/uploadsディレクトリがなかった。
  • トップページ以外が 404エラーになった。 ・・・ .htaccess がなかった。

どっちも自分が悪いし、同じ原因でした。
インストール時に、インストールディレクトリのパーミッションを 777とか 755とかにしておいて最後までちゃんとやればよかったんだけど、どうやらこの現象が出るということは途中でパーミッションを戻したみたい。たぶん普通にやると、uploadsも .htaccessも作られるはず。
 
.htaccess なしにどうやって URLをさばいているのか、小一時間悩んじゃったよ。uploadsの方は、upgradeフォルダにパーミッションをあげたりしてて、なんでかな?状態になっていたことはヒミム。