PHP関連
入力フィールドを複数追加できるタイプのカスタムフィールドを扱う際の注意点
Custom Field Templateプラグインを使用すると、投稿時に入力フィールドを任意に増やせるカスタムフィールドを作ることが出来ます。
↓こういうの
追加ボタンを押すことで、フィールドを増やしていけるわけですが、入力はともかく、取り出し方には注意が必要です。
通常、カスタムフィールドを取り出す場合
<?php $meta_values = get_post_meta($post_id, $key, $single); ?>
$post_id:投稿ID
$key:カスタムフィールド名
$single:取得方法。配列ならfalse、1つめだけならtrue
というふうに取り出すのですが、これで取り出すと、複数フィールドの並び順がばらばらで取得されてしまいます。
しかも投稿を編集するたびに並び順が変わるという困った状態に。
なぜ上から順に取り出してくれない・・・
ということで、検索したところ、こちらの方法で解決しました。
Custom Field Template(カスタムフィールドテンプレート) | WordPress 編
複数フィールドを上から順に取り出す場合はsqlをつかって取り出します。
複数フィールドのカスタムフィールド名が「Hoge」とした場合
<?php global $wpdb; $query = "SELECT * FROM ".$wpdb->postmeta." WHERE post_id = ".get_the_ID()." AND meta_key = 'Hoge' ORDER BY meta_id ASC"; $cf = $wpdb->get_results($query, ARRAY_A); $Hoge = array(); if($cf){ foreach($cf as $row){ $Hoge[] = $row['meta_value']; } } ?>
これで複数フィールドの並び順(meta_id)順でデータを取得することができます。
nandani | 2013年05月18日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連
cakePHP2.x系をレンタルサーバで運用する祭の注意点
テスト環境で作成したcakePHP2.xを使用したウェブシステムを、レンタルサーバにアップしたところ
Error: SQLSTATE[HY000] [2005] Unknown MySQL server host ’(ホスト名):(ポート番号)′ (3) requires a database connection
というエラーが出てしまいました。
調べてみたところ、どうやらcakePHPはバージョン2からPDOを使ってデータベース接続を行っているらしい。
ってことはこのレンタルサーバはPDOが使えない・・・?
おまけにユーザが勝手にインストールできないタイプのサーバだから、詰んだ!\(^0^)/と思ったのですが、phpinfoを見る限り、モジュール入ってるし、実際問い合わせたところ使用は可能ですよ、とのこと。
その回答いわく、PDOでデータベースに接続する場合は、ホスト名とポート名を別々に指定する必要があるそうです。
つまり、
'host' => '127.0.0.1:3306',
という風に記述するのではなく(↑↓ホスト名とポート名は適当です)
'host' => '127.0.0.1',
'port' => '3306',
と、ポートはポートで記述しなくてはならなかったわけです。
テスト環境ではポートは気にしなくても大丈夫だったので盲点でした。
参考サイト
nandani | 2013年05月18日 | コメント(0) | トラックバック(0) | PHP関連
cakePHPでvalidatesを使う場合の注意事項
cakePHPにて
$this->(モデル名)->validates();
を使用する場合は、事前に
$this->(モデル名)->set();
を忘れずに設置する。
$this->(モデル名)->set();
$this->(モデル名)->validates();
setが無いとなんでもtrueで返ってきてしまいます。
nandani | 2013年04月12日 | コメント(0) | トラックバック(0) | PHP関連
TwitterのAPIの仕様変更
Twitterのタイムラインを
http://twitter.com/statuses/user_timeline.xml?id=(アカウント名)
でデータ取得していたのですが、仕様変更に伴い上記では取得できなくなったです。
調べたところ、URLにバージョン情報を含まないといけなくなったみたい。
以降は
http://api.twitter.com/1/statuses/user_timeline.xml?id=(アカウント名)
で取得するようにしましょう。
参考サイト
Twitter APIの仕様変更によってあちこちのアプリでエラーが出てるみたいなので、その対処方法の話。 » とりあえず9JP
Twitter REST APIでタイムラインを取得して、Twitter-text-phpでアンカー表示 | はるる*Weblog
nandani | 2012年10月15日 | コメント(0) | トラックバック(0) | API関連 | PHP関連
WordPressでページネイション
このプログラムは、コリスさんのサイトにある「WordPressにプラグイン無しでページネーションを設置する方法」を少し改造したものです。
nandani | 2012年09月04日 | コメント(0) | トラックバック(1) | CMS関連 | PHP関連
マップ表示用スクリプトをバージョンアップしました[バージョン1.4b4]
コメントにてバグ報告をいただいたため、マップ表示用スクリプト【Google Map API v3版】を1点修正しました。
■今回修正されたバグ
緯度経度がマイナスになることを考慮していなかったため、一部地域のみに複数マーカーが集中して表示されると、中心地がおかしくなる。
※なお、マーカーが日本のみにある場合は、旧バージョン(v1.3b)をお使いでもこの問題は起きません。
nandani | 2012年06月30日 | コメント(0) | トラックバック(0) | JavaScript関連 | News & Topics | PHP関連
location.href (Javascript)と $_SERVER['HTTP_REFERER']; (PHP)
PHPで
$_SERVER['HTTP_REFERER'];
を実行すると、リンク元のURLを取得することが出来ます。
これを利用するとダイレクトアクセスを防いだり、どこから飛んできたのかを調べることが出来るのですが、Javascriptの
location.href = "リンク先URL";
で飛んでこられると、取得できない場合が有ります。
どういう場合かというと、「IE8以下」の場合。
またお前か・・・
素直に「a href="リンク先URL"」を使うか、formのsubmit、PHPの「header("リンク先URL");」などの方法で飛ばすことにしましょう。
最近はIE9やFirefoxでチェックしてしまうので、見落としがちになってしまいます。注意せねば。
nandani | 2012年06月16日 | コメント(0) | トラックバック(0) | JavaScript関連 | PHP関連
MTのデータベースの文字コード変換【Movable Type】
サーバ移転の話が続きますが、MTを移転すると、管理画面に入ったとき、文字化けしているときがあります。
大体そういう場合は、データベースの文字コードがおかしかったりします。
特に「latin1_swedish_ci」の場合。
最近のレンタルサーバであれば「utf8_general_ci」に自動的になってくれたりするところもあるのですが、専用サーバなどの場合、phpMyAdminなどで何も考えずにデータベースを作ると大体この「latin1_swedish_ci」になります。
それでも、これからMTをインストールする分には、特に文字化け問題は発生しないのですが、問題はサーバを移転したとき。
以前のサーバでは「latin1_swedish_ci」でも正常に表示できていたはずなのに、移転した途端文字化けが発生したりします。
というわけで、このような場合は、「utf8_general_ci」に文字コードを変換してあげましょう。(MTの文字コード設定がUTF-8の場合)
nandani | 2012年06月02日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連
プラグイン作るときは自動保存に注意【WordPress】
WordPressにて投稿フォームに設置するようなプラグインを作る場合は、自動保存に注意しましょうというメモ。
投稿フォームに設置するということは
add_action('save_post', 'hoge_save'); function hoge_save( $post_id ) { $wpdb->query("UPDATEやINSERTのSQL"); }
みたいな保存用のプログラムを書くことになると思うのですが、問題は自動保存。
この「add_action('save_post', '実行する関数名');」というのは、ボタンを押して保存するタイミングだけでなく、自動保存時にも実行されてしまうのです。
nandani | 2012年05月25日 | コメント(0) | トラックバック(2) | CMS関連 | PHP関連
WordPressのサイトマップを作る【プラグインなし】
WordPressのサイトマップといえば「Sitemap Generator」プラグインが有名でいつもお世話になってますが、今回はプラグインなしで作ってみることにしました。
早速ですが、出来上がったものがこちら。
nandani | 2012年05月16日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連 | WEB関連全般