かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

PHP

PHP aタグだけ除去したい。

aタグで囲っているコンテンツの中に、管理画面のWYSIWYGエディターなどでユーザーが入力したHTMLのを出力する時、出力するHTMLの中にaタグが含まれていると、リンクが壊れてしまいます。 [参考] なので、aタグだけを除去して出力したい! PHPではstrip_tags…

PHP count(false)は1になる。

WordPressの関数などで、wp_get_attachment_image_srcなど、存在すれば配列が、存在しない時はfalseが返ってくようなものがあります。このような関数を使っている所で、返ってきた値の有無を確認するのにcount()を使っていると予期しないバグを発生させてし…

PHP PDO 複数条件(WHERE IN)にハマる

PHPのPDOで複数のidのデータをまとめて取ってくるとかで WHERE IN を使おうとしてハマったのでメモ。 配列のまま渡しても取得できない。 prepare($sql); $stmt->bindValue(':ids', $ids, PDO::PARAM_INT); $stmt->execute(); $res = $stmt->fetchAll(); var_…

PHP 配列の内容をログにとりたい。

PHP

PHPでデバッグやフレームワークで渡される配列を展開してログに吐きたい時のメモ。 要するにRubyとかのArray.to_sみたいな感じで展開してログに吐き出したいわけです。 PHPでは配列をそのままerror_logに渡しても上手く書き出せません。

WordPress 個別記事をpost_typeで判定をしたい。

例えば通常の投稿(post)の個別記事か判定したいような時。 is_single() ではpost_typeの判別はできない。

PHP 定数の有無を確認したい。

PHP

WordPressのテンプレートなどで環境定数があれば、何かを出力したいとかの時。 isset() を使うとエラーになる // GoogleAnalytics のスクリプトを表示 ↓ PHP Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expr…

Mac環境 HomebrewでPHPのバージョンを上げる時のメモ

PHPのバージョンが5.4のPCがあったので、メインの開発で使用していたバージョンと同じ5.6系にHomebrewでアップデートした時のメモ。 Homebrewをアップデートする $ brew update 「Error: Formulae found in multiple taps」というエラーが出た Error: Formul…

PHP5.6 Mac環境 Stashでキャッシュを作成してみる。

WordPressでサイトを良く作っていた頃にDBからガッツリデータを取得して作成したパーツをキャッシュ化したりするのにCache_Liteを使っていました。さすがにCache_Liteはもう古いよな〜と思っていてちょうどPHPでキャッシュを使いたい案件に当たったのでキャ…

PHP file_get_contents()でAPIを叩いた時のエラーハンドリングしたい

PHP

URLを指定してGETでデータが返ってくるようなWebAPIを叩くのにfile_get_contents()を使ってみました。(もっと良い方法があれば教えて下さい。) で、APIからデータは取得できたのですが、例えばAPI叩きすぎとかでAPIからエラーを返されることがあります。 そ…

PHP PDO UPDATE時にそのまま値をインクリメント/デクリメントしたい。

前もって現在の値を取得しなくても、 UPDATEのSQLのSET節でインクリメントなら カラム名 = カラム名 + 1、デクリメントなら カラム名 = カラム名 - 1という形で記述すれば変更できる。 prepare($sql); // 略 特定のインクリメントに限らず特定の数の足し引き…

PHP Cache_Lite 使おうとしたらPEAR.phpが読み込めなくてエラーが表示された。

すごい昔に作られたサイトの改修をしていました。WordPress製だったので、丸っとデータを貰ってローカル環境で表示させてみた所、下記のようなワーニングとエラーが表示されてしまいました。 Warning: include_once(PEAR.php): failed to open stream: No su…

もっと簡単版!WordPress 投稿の並び順の条件(orderby)を複数にして、それぞれの並べ方(order)を別々に指定したい。

以前、pre_get_posts内で独自の値を$wp_queryにセットしてorderbyを複数にして、それぞれ別のorderにする方法を書いていました。 最近検索していたら、実はもっと簡単に実装できたことが判明しました。 orderbyに配列で条件と並べ方を渡すことができた! 以…

CakePHP3 CSRFトークンをフォームに埋め込みたい。

Controlllerに下記を記述する loadComponent('Csrf'); } View Template内で $this->Form->create() でフォームを作ると自動的に<input type="hidden" name="_csrfToken" value="50cb5cab62f62ccc04b2ced3f789e977204fd900">のようなインプットタグが作られる。 Cross Site Req…

CakePHP3 View TemplateでURLのリンクを作りたい。

例えばController Articles、action editで/articles/edit/{article_id}の様なURLが作りたい時 1. Htmlヘルパーを使う Html->link('編集', [ 'controller' => 'Articles', 'action' => 'add', $article_id ], ['class' => 'btn']); <a href="/articles/add/1" class="btn">編集</a>というaタグが出力さ…

CakePHP3 Composerでインストールしたらautoload.phpが読み込めないエラーが出た

Mac OS X Yosemite環境・Homebrewでcomposerコマンドをインストールしています。 CakePHPをComposerでインストール CakePHPをComposerでインストールできるようだったので公式ドキュメントを元にターミナルを起動して下記コマンドで インストールしました。 …

CSS内でPHPの変数を使いたい。

例えばWordPressのプラグインなんかを作っていて、CSSで変数を使いたいなんて時があります。 読み込みをPHPファイルにする。 まずはCSSファイルの拡張子を.phpにして、CSSを読み込ませていた部分をPHPのファイルに変更します。 HTMLならこんな感じ。 <link rel="stylesheet" type="text/css" href="sample.php" /> WordPr</link>…

Wordpress 記事を属性 順序( menu_order ) の順番に並べたい 順序が同じものがあっても大丈夫版

以前にWordPressの投稿をmenu_orderの順番に並べて表示させる方法を書いていました。 一覧表示・管理画面の一覧をmenu_order順にするまでは良かったのですが、個別ページ(single.php)などで前後の投稿へのリンク(previous_post_link, next_post_link)の表示…

PHP cakePHPで初めてのComposer (Mac Yosemite)

cakePHPを触ってみようかと思いインストールしたらcomposer.jsonがあったので折角なので今まで見ぬふりしてきたcomposerそろそろやってみようと思い立ったのでメモ Composer をHomebrewでインストールする $ brew install composer DebugKitをcomposerに追加…

WordPress 投稿のカテゴリーをラジオボタンにカスタマイズしたら、クイック編集でカテゴリーがチェックされなくなったので。

ちょっと古い記事なのですが、LIGさんの解決!WordPress投稿画面のカテゴリーをカスタマイズする方法という記事を参考に投稿のカテゴリーを複数選択できないようにラジオボタンに変更しました。 記事に掲載されているコードの通りに行うことでカテゴリー選択…

WordPress 投稿の並び順の条件(orderby)を複数にして、それぞれの並べ方(order)を別々に指定したい。

※ もっと簡単に実装できる方法がありました! 追記 2015 12/25 前回WordPressの投稿の並び替え条件(orderby)を複数にする方法を書きました。 しかし、この方法ではorderbyを複数にすることはできましたが、それぞれの条件で並べ方(order)を指定することはで…

PHPMailer でメールのタイトルが長いと文字化けする。

WordPressでも内部的に使われてるらしいPHPMailerさん便利なのでちょくちょく使っているのですが、メーラーによっては日本語で長い文章をメールのタイトルにすると文章の途中が文字化けしてしまっていました。 てっきりメーラーの仕様なんだと思っていたので…

PHP5 例外処理でエラーをぶん投げ(throw)たらPHPのエラーになった。

PHP

クラス内の関数で処理をしてエラーがあればExceptionでthowして呼び出し元でエラーを表示させようとしていた所次のようなエラーが出てしまいました。 Fatal error: Uncaught exception 'Exception' with message ... エラーになったコード

Wordpress 固定ページのslug(URL)とカスタム投稿タイプ名が被ってるとどうなるか調べてみた。

既存のプロジェクトに途中参加した際の出来事です。 新しいカテゴリーのページを追加したいということでカスタム投稿タイプを作成したのですが、既存のページのレイアウトが変わってしまっていると連絡をもらってしまいました。調べた所このプロジェクトでは…

WordPress 固定ページでもWP-PageNaviプラグインをつかいたい。

固定ページにサブクエリを使って投稿を表示させ、WP-PageNaviプラグインでページ送りを表示させる方法のめも。 固定ページのテンプレートにただプラグインを表示させるコードif(function_exists('wp_pagenavi')){wp_pagenavi();}を書いてもナビゲーションは…

WordPress カスタム投稿タイプかどうか判別したい。

is_archive()とかの分岐をカスタム投稿タイプでしたい時の書き方 アーカイブページ is_post_type_archive( $post_type ) を使う

WordPress Custom Metaboxes and Fields for WordPress 他の投稿が選択できるセレクトボックスを作った。

コードベースでカスタムフィールドが作れるWordPressのプラグイン「Custom Metaboxes and Fields for WordPress」が超便利なので使っています。 ▼ 以前の記事 ▼ textareaやcheckboxなど色々なフィールドがコードベースで作ることができるのですが、カスタム…

WordPress WP Social Bookmarking Light を好きなところに表示させたい。

WP Social Bookmarking Lightは管理画面から表示させたいソーシャルブックマークを選ぶだけで簡単にショーシャルブックマークのボタンを設置できるWordPressのプラグインです。 WP Social Bookmarking Light 簡単に使えるように管理画面の設定でブックマーク…

PHP Cache_Lite 保存するときはテキスト化する。

PHPでCache_Liteでキャッシュを保存していた時にキャッシュ自体は保存できているのに、Cache_Lite->getしてもfalseになりキャッシュが上手く機能しなくてハマッたメモ。 Twitterからタイムラインを取得して返すAPIを作っていました。

PHP 1年後の今月末を知りたいにハマる。

PHP

PHPでnヶ月後の月末を取得したい場合、(n+1)ヶ月後の1日を取得して1日引けばOKというのをよく見かけるので、1年後なら13ヶ月後の1日を取得して...と思いコードを書いていました。

MySQL WHEREでnullのデータを検索条件にしたい

PHPのPDOでWHEREの検索条件をnullにしてsqlを発行したいと思い下記のようなSQLを作ってみました。 SELECT * FROM {$TABLE} WHERE {$COLUMN} = null; 残念ながらこれだと上手く取得できませんでした。 nullを検索条件にする時はis nullを使うと良いようです。…