かもメモ

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

PHP

PHP Bool値を文字列として出力したい。

PHP

PHPでBoolean値をそのままtrue/falseといった文字列で表示したい時はvar_export()を使えばOK。

WordPress ContactForm7 動的なオリジナルのフォームタグを作りたい。

WordPressでサイトを作る時のフォームの定番Contact Form 7はすごく便利なのですが、カスタム投稿から動的にselectタグを作るなどカスタマイズしたタグが欲しいことがあります。 ゴール (作りたいフォームタグ) 例えばこんな感じに、タレント(talent)という…

PHP json_decode がnullになるにハマる

PHPのjson_decodeは値が " (ダブルコーテーションで)囲まれていないと null になるっぽい。 json_decode() でnull になるJSONのパターン 1. " で囲われていない値がある json = {1: "星宮いちご"} NULL 2. 値が ' (シングルコーテーション)で囲まれている j…

PHP 文字列末にある特定の文字を除去したい。

PHP

例えば WordPressを使ったサイトで home_url('/') でサイトのURLを取得してそこからURLを組み立てたい時とか。 home_url('/') は行末に / が出力されるので、/ 始まりの変数と結合するとイケてないURLに… http://example.wordpress.com//assets/images str_…

PHP56 Macを再起動したらlibphp5.soが消えてapacheが起動できなくなった。

Macを再起動して普段通りapacheを起動しようとしたら次の様なエラーが表示されるようになってしまいました。先方の環境に合わせてPHP56です $ sudo apachectl start httpd: Syntax error on line 170 of /usr/local/etc/apache2/2.4/httpd.conf: Cannot load…

PHP Carbonを使って週表示のカレンダーを作りたい。

PHP

週だけ表示できる良い感じのカレンダーが見つからなかったのでPHPで作ってみました。 日付の処理はLaravelでも使用されているCarbonが便利らしいので、これを使うことにしました。 仕様 簡易に曜日と日付が表示できればOK 週の始めは月曜 / 日曜 前後で月が…

WordPress テンプレートをまたいで使えるグローバル変数を作りたい。

header.phpやfooter.phpなど別れているテンプレートで共通の表示や値を使いたい時、ハードコーディンしてると修正があった時面倒とか、管理画面から入力された値を使って出力したい場合、共通の変数にしてテンプレートで使いまわせると便利かもしれません。 …

WordPress ページを使用しているテンプレートから取得したい

固定ページを取得したい時、ページ名が決まりきっているならget_page_by_title( $page_title )を使うのが手っ取り早いです。( get_page( $page_ID ) はテスト環境・本番環境で制作してると両者でIDが違ったりするので使いづらい ) しかしながら、get_page_by…

WordPress タクソノミー名によっては予約語でなくてもアーカイブページに投稿が表示されないことがあるっぽい

遥か昔、100億年ほど前に作っていたテーマを使用していたサイトで突然アーカイブページに何も表示されなくなったと連絡がありました。ブラウザの表示でなければ、何もして無ければ変化が起こるはずがないので、何を変更したか訊いたところ「WordPressとプラ…

PHP Slim 2.x Ajaxでputで送った値を取得したい。

"Slim is a PHP micro-framework" Rubyのテンプレートエンジンじゃない娘のお話です。 3系が既に出ているのですが、先方のサーバーのPHPのバージョンの関係で2系で開発をしています。今回 Ajaxのputメソッドでデータを送ったのですが、Slim側で値をとるのに…

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)を複数にして、それぞれの並べ方(order)を別々に指定したい。 - かもメモ 前回WordPressの投稿の並び替え条件(orderby)を複数にする方法を…

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」が超便利なので使っています。 ▼ 以前の記事 ▼ Wordpress カスタムフィールドを追加できる「Custom Metaboxes and Fields for WordPress」が超…

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を使うと良いようです。…

MacOS X Yosemite (10.10) HomebrewでApache&PHPの環境設定とlocalhostの設定にハマったのメモ

Apache, PHP, MySQLの導入Homebrew で Apache, PHP, MySQL, Composer をインストールして Yii Framework を動かすところまで - Qiita を参考にしました。 ポートを80をデフォルトにしたい時はhttpd.confを編集 Listen 80 vhostの設定ファイルを読み込ませる …

ファイルの404でもエラーページが呼ばれるのね。

サーバーとAjaxでやりとりさせるために各ページで下記のような感じにTokenクラスを作りToken::get_harf_token()でトークンを更新し半券を返すような処理を作成して、トークンを埋め込んでいました。 <input type="hidden" value="<?php echo $token->get_harf_token(); ?>"> とあるページで動作のテストをしていたら、特にトークン…

PHP PDO 直近にINSERTされたデータのIDを取得したい

mysql_connect()でMySQL接続していた時でいう所のmysql_insert_id()の様に直近にINSERTされたデータのIDをPDOで取得する方法。 lastInsertID()を使う。 PHP: PDO::lastInsertId - Manual public string PDO::lastInsertId ([ string $name = NULL ] ) 最後に…

PHP PDO bindParam()と日付型(DATE, DATETIME)とBOOL型にハマる

PHPのPDOを使ってDBにデータを挿入しようとした際にハマりました。 bindParam()に直接値を書くをエラーになる。 データが無ければnullを入れようと思い下記の様なコードを書いていました。 ("INSERT INTO {$TABLE} (data) VALUES (:data)"); if(!empty($data…

PHP 変数で関数を実行したい。(可変関数)

PHP

動的に関数を実行したい事がよくあります。 javascriptだと配列(Object)のキーに関数を入れちゃえば簡単なのですが、 PHPだとよく解らなかったので調べました。(PHPの事はすぐ忘れる...)まず、PHPには変数に入ってる文字列を関数として使う機能があり、 これ…

Wordpress 記事を属性 順序( menu_order ) の順番に並べたい

追記: 2015-09-15 この方法では、順序( menu_order )に同じ値を指定していると、前後の投稿リンクが上手く動作しません。 新しく修正版を書きましたので、こちらを参照ください。 Wordpressの固定ページには属性の欄に順序があり表示する順番を決めることが…

Wordpress カスタムフィールドを追加できる「Custom Metaboxes and Fields for WordPress」が超便利だった

Wordpressのカスタムフィールドを追加できるプラグインも沢山あるのですが、 コードベースの方がデプロイなんかが楽なのでいつもコードで書いていました。 0から書いていると保存とか色々とメンドーな記述が多くて苦労していたのですが、WordPressのカスタム…

Wordpress 検索結果から固定ページを除外したい

久しぶりにWordpressを触っています。忘れている事だらけで大変です!さて、Wordpressの検索ですが昔は投稿のみが対象だったと記憶していますが 新しくなって固定ページも検索結果に含まれるようになったっぽいです。 固定ページを検索結果から除外したい で…

Wordpress 固定ページにGETでパラメーターを渡すときに気をつけること。

Wordpressの固定ページにフォームを置いて自動的に値を入れたいときなど、GETパラメーターで値を渡してあげたりするのですが、固定ページが404や意図しないページが表示されてしまうことがあります。たとえばnewsというカスタム投稿を作成していた時に http:…

Wordpress 新しい投稿にNEWって表示したい。

Wordpressの投稿一覧ページなどで最近の投稿にはNEWと表示させてみました。実装する方法を考えました。 1. 今日の日付と投稿日の日付を比較する 2. 差がn日以内なら NEW を表示 1. 今日の日付と投稿日の日付を比較する PHPで2つの日付からあと何日あるか調…