かもメモ

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

PHP

WordPress PHP7.3にしたらデフォルトテーマでno more memoryってWarningが表示された件

PHP7.3のバグphp.iniでコメントアウトされてる `;pcre.jit=1` を `pcre.jit=0`として有効にすればOKっぽい。(今の所...

WordPress PHP 7.x でデータベース接続確立エラー

php.iniを開いてdefault_socketをチェックしよう。WordPressはmysqli.default_socketが設定されてないとデータベース接続確立エラーになるみたい。

WordPress pre_get_posts内でSQLをカスタムするフィルターを使う時に注意すること

※ この記事は古いWordPress (v4.1)を触っていて発生した現象なので、新しいWordPress環境では発生しない可能性があります。

WordPress 管理画面の固定バー(Admin bar)にカスタムボタンを設置したい

WordPress管理画面の上部にあるAdmin barにカスタムボタンを設置する方法のメモ functions.php 'my_custom_button', 'title' => '表示される文字', 'href' => '#', 'meta' => [ 'class' => '' ], ]; $wp_admi…

PHP phpbrewで古い環境のPHPを動作させたメモ

別の人が作成した古いWordPressの改修の依頼が来て、環境つくりに時間がかかったのでメモをしておきます。 レンタルサーバーで動いているサイトだったのでPHP + Apache + MySQLという構成です。 要件

PHP / JavaScript ファイル生成してDLさせたいけどmax_input_varsにかかってしまう問題にパワープレイで立ち向かった話

PHP製の管理ツールで、CSVを生成してDLするシステムを作っていました。 データ量が多いとエラーになるということで調べたら、PHPのmax_input_varsにかかって居るのが原因でした。 そして、使っているサーバーがhetemlでmax_input_varsの上限を変えることが出…

PHP マークダウン変換できるライブラリParsedown使ってみた。

WordPressのカスタムフィールドで作っていたテキストエリアで部分的にボールドにしたいという要望がありました。 運用してる人的にHTML書いてくださいってのはハードル高そうだし、カスタムフィールドをWYSIWYGにするのは工数もかかるし自由に出来すぎるとwo…

Mac OSX 開発環境セットアップのメモ (6) ApacheでPHPが動くようにする

PHPはphpbrewでインストールしました。 Macにデフォルトで入っているapacheを起動しないようにする $ sudo apacehctl stop $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist homebrewでインストール 以前はhttpd24という名…

Mac OSX 開発環境セットアップのメモ (5) phpbrewでPHPをインストール

フリーランスのお仕事だとレンタルサーバーにWordPressでホームページ作りたいってのがまだまだ多いのです。 MAMPやXAMPPはサーバーもセットで簡単にインストールできるのですが、稀にお客さんの用意しているレンタルサーバーのPHPとMySQLのバージョンが違っ…

WordPress pre_get_posts・WP_Query 別々の条件で記事を取得したい

WordPressのWP_Queryやpre_get_postsアクション内で投稿を取ってくる時に、一緒にできない複数の条件(複数のSELECT文が必要な条件)で投稿を取得したいような時のメモ。 メインループ外の場合は2回WP_Queryを実行(SQLを発行)してそれぞれ取得したデータの配列…

WordPress MySQL 特定のカスタムフィールドの値が存在しない投稿を取得したい。

WordPressのデータベースでは、カスタムフィールドの値は{$pre_fix}postmetaテーブルに登録されます。 postmeta テーブル +------------+---------------------+ | Field | Type | +------------+---------------------+ | meta_id | bigint(20) unsigned | …

PHP if文の条件の判定順

if文の中に&&や||で条件を複数入れた時にどちらから処理されるか、PHPは左からであってると思ったけど、何か右から判定するのが合った気がしたので念のため調べてみました。 次のような関数を作成して、この関数を条件にすれば、出力結果から左右どちらから…

Wordpress CMB2 1行text(input)フィールドでHTMLタグを入力できるようにしたい。

WordPressにコードベースでカスタムフィールドを作成することが出来るCMB2。 とても便利なのですが、 1行textフィールド(通常のinput[type="text"])はデフォルトだとHTMLタグを保存時に除去(sanitization)する仕様になっていました。(以前はサニタイズされて…

PHP 配列のキー・Objectのキー(プロパティ)の有無をチェックしたい。

PHP

配列のキーの有無のチェック

PugでPHPタグを出力したい

pugはHTMLテンプレートエンジンなのですが gulp などで拡張子をリネームしてしまえば PHPのテンプレートファイルにする事もできます。 ex: var gulp = require("gulp"), plumber = require("gulp-plumber"), rename = require('gulp-rename'), pug = require…

PHP A~Zを簡単に出力したい。

PHP

range() 関数を使う range range — ある範囲の整数を有する配列を作成する array range ( mixed $start , mixed $end [, number $step = 1 ] ) string(1) "A" [1]=> string(1) "B" [2]=> string(1) "C" [3]=> string(1) "D" [4]=> string(1) "E" [5]=> stri…

Ajaxを使ってWordPressからコンテンツを取得したい。

WordPress製のサイトに独自のコンテンツなどを取得できるAjaxを作成する方法のメモ 1. 呼び出すアクション名を決める 2. Ajaxの送信先をjsから使えるように出力する 3. Ajaxで呼び出される関数を作成する (PHP) 4. フロントからAjaxでの呼出しを作成する (ja…

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_…