HtmlHelper、FormHelper、Viewは直接使わないほうがイイ。FormHelperを直接使わない場合、どのようなことができるのか書いておきます。「選択してください」的なやついちいちarray_merge()してましたが、FormHelper::input()のオプションで出来るんですね。04:43MySQLPHP[WordPress]本番環境をローカルに再現マルチサイトONで設置してあるWordPressをドメインを変更してローカルで動かすときの手順。hasAndBelongsToMany(HABTM)関係にあるモデルのconditionsつい最近わかった。ブログを例にして投稿(Post)とタグ(Tag)がhasAndBelongsToManyの関係にあるとします。もってタグ「iPad」のページに「iPad」のタグが付いた投稿を表示させることは簡単ですよね。HtmlHelper、FormHelper、Viewは直接使わないほうがイイ。HtmlHelper、FormHelperを拡張したくなるはずです。最初からHtmlHelper、FormHelperを継承したオリジナルのヘルパーを作っておくと楽ですよというだけの話です。検索条件とかが反映されない場合。なんかうまく動く時と動かない時があったのでちょっと整理。03:20PHPWordPressのショートコードをいろいろなプロジェクトで使いたい。再利用しにくい実装なので、クラス化しようと思ったら既にしてありました。3.5で$postの型がstdClassからWP_Postに変更になったのでメモ。複数フィールドのバリデーション。メールアドレスの再入力とか。メールアドレスの再入力とかうっとおしい派としてはあまりやりたくないのですが、一定の効果はあるみたいなので需要はあるようですね。ことでメールアドレスの再入力のような複数のフィールドの型が同じ場合のやりかた。結果はこんな感じになります。バージョンは2.2.4。使うとWarningの解決方法がわかった。去年もこの時期WordPress触ってたんですね。利用したZendFlameworkのバージョンは1.11.7。19:27PHP[PHP]require/includeの便利さがわかったら次はこれ。ウェブサイト制作に役立つ関数をつくる。呼び出すという方法がよく紹介されています。たしかに便利ですが、呼び出したものがそのまま出力されてしまうため、汎用性欠けあまり使い勝手のいいものではありません。HTMLなコンテンツを呼び出すための専用の関数を作った方が捗ると思います。03:57PHP[CakePHP2.X]PEARを使う。CakePHP2系でPEARをインストールして利用するまでのメモ。PEARパッケージとしてCakePHPを入れるのではなく、CakePHPにPEARを入れる場合です。Authコンポーネントのallowとdenyallowとdenyで全てのURLを対象とする場合、1系では*を引数にしてましたが2.1.Xでは引数は不要になったみたいです。allow('*')とするとうまく動かないみたいです。03:20PHP[PHP]環境変数を設定して開発環境と本番環境を分岐する。コマンドラインで利用すると$_SERVERの値はほとんど設定されてないのでNoticeエラーを吐き出します。04:13JavaScriptPHPXMLHttpRequestってUserAgentを変更できないのかorzセキュリティ的に禁止してるんだろうけどChromeでは出来ないのか、そもそもJavascriptの仕様として禁止されてるのかは不明。04:05PHP[PHP]文字列を1文字ごとタグで囲むPHPで文字列を1文字ごとタグで囲みたいとき。04:34PHP[CakePHP2.0.x]FormHelper::input()の出力メモFormHelper::input()の出力がどのくらい変更できるかのテスト。05:47PHP[CakePHP2.0.x]Authコンポーネントの変更点CakePHP2系が出たので、勉強しなおしてるんですが、Authコンポーネントがいろいろ変わってましたのでメモしときます。1系もあまり勉強できてないので、CakePHPの書き方として正しいのかは不明ですが、とりあえずこれで動いたという感じです。PEAR.PHP.NETパッケージ一覧2011.02.26時点のパッケージ一覧。対象はPEAR.PHP.NET。get_header()とwp_head()を捨てる。捨てることで何かメリットがあるかと言うと残念ながら特にありませんので、この内容をオススメしてるわけではありません。03:54PHP[WordPress]管理画面のフッタのフィルタとアクション。時間も時間なので、あまり使用頻度の高くない微妙なネタを。こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。ブログの情報を取得する方法とノーキャッシュ疑惑ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。テンプレートのごちゃごちゃが限界にきたのでラッパー書いてみた。[WordPress]テンプレートがごちゃごちゃしてきたらstr_replaceとかでごまかしてきたけど、限界が来たのでラッパーをかいてみた。次の投稿と前の投稿を取得する。次の投稿とか前の投稿を取得するget_adjacent_post()が、どうもループ内じゃないと利用できないようになっている模様。Zend_Loader_Autoloader::autoload()Zend_Loader_Autoloader::autoload()を利用していて、is_a()の第1引数がパスっぽいものだとWarningが発生する。01:31PHP[WordPress]アバウトなis_home()query_posts()を使うとfalseになるとかの問題もあるis_home()。使うとWarning解決しました。Zend_Loader_Autoloaderでクラスのオートロードしたら管理画面でWarning出現。テンプレートルーティングのメモWordPressが呼びだすテンプレートをTEMPLATEPATH直下じゃなくてTEMPLATEPATH/views/とかにできるのか調べた時のメモ。03:40PHP[WordPress]ハマりポイントget_user_meta()3.2.1、マルチサイトONでの結果。ローカル環境で動いて本番環境で動かない。get_user_meta()使ってないか確認してみる。11:22PHP[WordPress]ユーザー登録が可能か調べるあまり使うことはないですね。03:57PHP[WordPress]パフォーマンスに影響するから実は非推奨なこと。見かけるけど実は非推奨なこと。暇なときはマニュアル読んでおくといろいろ発見がありますね。1つしか指定できなかったんだけど、3.1から複数設定できるようになった。12:06PHP[WordPress]投稿タイプ、タクソノミー、タームについてWordPressのいまいちピンとこないやつらについてのメモ。03:34PHP[PHP]ウェブデザイナーはどんな関数をつくればよいか。PHPを学び始めて関数の作り方はわかったけど、どういう関数作ればいいのかよくわからんって人に。HTMLを記述する人(クライアント)向けにどんな関数を作ればよいのか考えていきます。WordPressのプラグインとかテンプレートタグ作る場合も役立つと思います。03:55PHPWordPressで会員サイト開発:Role追加編WordPressでこんな感じのサイトを作る。15:27PHP[PHP]ビューとレイアウトを分けるワケWordPressとかMovableTypeは使ってるけどCakePHPは使ったこと無い人。デザイナーさんとかにビューとレイアウトを分けるとイイコトあるよと伝えたい。02:28PHP[SPL]SplFileInfo久しぶりにSPLネタ。23:41PHP[PHP]定数を動的に呼び出すどう使えばよいのかわからないけど、とりあえずメモ。02:04PHPMovableTypeをCakePHPのViewとして使うためのMovableTypeテーマを書いてみた。MovableTypeの検索のシステムテンプレートをPHPに置き換えるの発展型。21:06PHP[WordPress]テンプレートがごちゃごちゃしてきたらstr_replacePHPとHTMLが濃密に絡みあうテンプレートは最もカオスになる部分。自分が出来てない濃密な絡みをWordPressだけしてるなんて許せないので何とかすっきりさせたいところです。00:40PHP[WordPress]XML-RPCを利用して外部から投稿したりする。Typeで、XML-RPCを利用する方法がエントリーされてたのでWordPressについて書いておきます。23:13MySQLPHPWordpressのエクスポートとインポート使ってデータ移転するとguidが変わらない全然気がつかなかったんですが、Atom見てて気がつきました。wp-incluedes/feed-atom.phpでid要素はthe_guid()で出力されてるんですね。03:42PHP[PHP]spl_autoload_registerTwigを眺めててspl_autoload_registerの引数ってArrayもありなんだと知りました。SimpleXMLIteratorから使ってみます。書かないとまずい気がしたので書いておきます。画像をデータベースに保存するのには、とても重要な意味があります。プラグイン作成前の基礎知識そろそろプラグインの一つでも作れるようになりたいので調べてみたのをメモ。基本tidyとSimpleXMLでスクレイピングの練習。ini_setが使える場合、include_pathに追加するって処理になっている。以下の件は激しくガセネタでした。普通にController::set()でlayoutに変数を引き渡せます。1.2.0でも出来てるのに恥ずかしいかぎりです。コントローラーからレイアウトへ値を渡すいい方法がわからない。思った以上に使う場面が多い。01:50PHPPEAR::Calenderを利用して特定の日付からn日間表示ループごとにnewしてたんだけどsetTimestamp()を使えばいいことにようやく気がついた。データを取得してみる。02:22PHP[PHP]CakePHPのcheckboxとhasAndBelongsToMany(HABTM)CakePHPのcheckboxとhasAndBelongsToMany(HABTM)は僕のスペックだと軽くハマれるわ。04:30PHP[PHP]CakePHPのAuthメモCakePHPのAuthコンポーネントのセットアップメモ。AnalyticsのAPIを利用してアクセスの多いページの情報を取得します。22:26PHPPHPとYAML設定ファイルとか書くのはYAMLって形式が簡単でいいらしい。16:01PHPPEAR::HTML_CSSを使ってみるCSSを処理したり生成したりするためのPEAR::HTML_CSSを使ってみる。使う機会はあまりなさそうですが。04:33JavaScriptPHP[jQuery]ツールチップをいろいろと検討ツールチップについて色々と検討。載せたあとのアニメーションとか不要じゃないですか?情報見たいからマウス載せてるわけで、すぐ見たいわけです。$wp_queryとか使うとそれほど面倒じゃなくできそうな感じです。ショートコードWordpressでハードコーディングしたくない文字とかどうするんだろうと思ってたらショートコードという便利な機能があった。こんな便利な機能、公式サイトでもっとアピールしといてもいいのに。05:11PHPCakePHPメモ1CakePHPで前に作ったサイトを復習がてら、最初からやり直そうかと思ってます。func_get_args()とforeachと参照まだまだPHP4は現役ですね。久しぶりにPHP4でコード書いてたら肝心なところがコピー扱いでハマりました。Array関数いろいろPHPには配列を操作する関数がたくさんあるのでちょっとずつ試していこうかとおもいます。うまくできない部分があった。CompositeCompositeパターンメモ単体オブジェクトである葉と葉や枝を持つことができる枝オブジェクトを同様に扱うことができる。ディレクトリツリーのような再帰的なデータ構造を表現できる。結局どうにもならなかったコード。できるようなのでちょいと試してみました。やってましたがglob()という便利なものがあるんですね。pathって複数設定できたんですね。知識不足だったようです。extract()の使い方を探るフレームワーク眺めていると、時々見かけるextract()。意味不明理解不能だったものが参照渡しでした。エントリーしときます。Singletonインスタンスが唯一であることを表現するSingletonパターン。part3simpleXMLではxPathを利用してノードにアクセスできるようなので試してみるよ。できてしまうっぽいので試します。20:29PHPsprintf()メモ慣れないとなかなか使おうと思わないprintf()。使いこなせばかなり便利なのは間違いない。21:09PHP一定時間でsession終了メモ一定時間経過したらログアウトとかに利用。時間の計算はUnix時間が便利。ファイルのオープンと読み込みめっさ基本的なことだけど、ファイル操作ってやってなかったんでやってみる。static修飾子pearのNet_UserAgent_Detectを眺めていたら「static」があった。「static」なんて使ったことなかったのでどんな動きするのか試してみた。シリアライズ/アンシリアライズオブジェクトをまるごとDBやテキストに書き込める形式にしてくれるシリアライズ。オブジェクトが保持しているすべての変数が対象。is_int()、ctype_digit()、is_numeric()数値関連の調査に使う関数is_int()、ctype_digit()、is_numeric()の違いについてメモ。配列の再帰処理ディレクトリ内のファイル取得をごにょごにょやってた時に知った再帰って考え方。クラス関数をコールする「::」演算子サブクラスでオーバーライドした親クラスのメソッドを呼び出すものと思っていた「::」について調べてみたらそれは使い方の1つに過ぎないようだ。エラーコードなんだかできそうでできないjavascriptのコード。22:55PHP不特定数の引数の受け取り方PHPで不特定数の引数を受け取った場合、func_get_args()で受け取ることができる。22:24PHP指定したキーが配列にあるかどうか調べる指定したキーが配列にあるかどうか調べるにはarray_key_exists()を利用する。21:38PHPOS、ディレクトリ区切り文字の取得PHPにはOSやディレクトリの区切り文字を取得する定数が存在している。開発環境はWINで本番環境はLinuxって場合は多々あるので結構便利ですね。14:34PHP変数がセットされてるかチェック変数がセットされてるかどうかをチェックするにはisset()を利用する。10:58PHP乱数を発生させる乱数を発生させるにはrand()関数を利用する。21:22PHPMySQLに接続MySQLに接続するにはmysql_connect関数を利用する。検索文字列)を利用する。繰り返し回数)を利用する。時間データを連想配列(ハッシュ)に格納するにはgetdate(タイムスタンプ)を利用する。検索文字列)を利用する。検索文字列)を利用する。其1大量のデータを複数ページに分割して表示したい場合に便利だというPagerを使ってみた。01:29PHPファイルの作成/更新/アクセス時刻を取得ファイルの作成、更新、最終アクセス時刻を取得するにはfilectime、filemtime、fileatime関数を利用する。22:18PHPMySQLクエリ用にエスケープ処理する関数SQLインジェクション対策として送信クエリは必ずmysql_escape_stringでエスケープ処理したほうが良いとのこと。感じの記述を見かけることがある。わからなかったので調べてみたらどうやら三項演算子ってものらしい。20:27PHPパス情報を分割して配列に格納パスをディレクトリ名、ファイル名、拡張子に分割してdirname、basename、extensionを要素に格納してくれるpathinfo関数。04:31PHP数値として扱えるかどうか確認is_numeric()は、引数が浮動小数点型、または整数型として取り扱えるかどうか確認できる。strrev()を使う。