かもメモ

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

WordPress

WordPress REST API を無効化する

WordPress v6.1.1 rest_authentication_errors フィルターを使う apply_filters( 'rest_authentication_errors', WP_Error|null|true $errors ) This is used to pass a WP_Error from an authentication method back to the API. Authentication methods sh…

PHP class プロパティ定義で Constant expression contains invalid operations

Class プロパティは宣言時に初期値を設定することもできますが、 初期値は 定数 値でなければなりません。 トノコト

WordPress 多言語化対応 Bogo で locale の投稿だけ取得したい

get_posts を使う場合は `'suppress_filters' => false` パラメーターを使うと現在の locale の投稿のみが取得できる

WordPress ネストしてるテンプレートに変数を渡したい

WordPress のテーマでテンプレートを分割して分割したテンプレートに呼び出し元から変数を渡したい場合は公式の get_template_part を使うのがパスの問題も無く意図しない変数の上書きもないので良さそうです!

WordPress OGP 情報を自前で出力してみる

WordPress で OGP の情報を出力するには All in One SEO などのプラグインを使えば実現できるのですが、WordPress からしばらく離れていたこともあり WordPress 独特のプラグインが GitHub にない場合も多くスター数やどれが現段階でのベストプラクティスな…

WordPress アップロードした画像を width, height 属性無しで取得したい

wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), $size ); で画像の URL を取得するのが良さそう

WordPress ContactForm7 select の先頭の空白 option のテキストを変更したい

Contact Form 7 の DOM をカスタマイズする時は wpcf7_form_elements フィルターを使えばOK

WordPress SSL 化のメモ

化石のような WordPress サイトのアップデート案件があり付随して SSL 化されてなかったので SSL 化したのでログとしてのメモ。 1. テーマ内にハードコーディングされている URI を修正する OGP設定や CDN などテーマ内にハードコーディングされている http …

Docker WordPress コンテナから MySQL コマンドが使いたい

三畳紀ぶりに WordPress の案件があって触ってます。 20世紀みたいに PHP 環境を local に作るのつらすぎるので docker を使ってい環境構築していたのですが、WordPress のコンテナから mysql コマンドが使えなかったので使えるようにしたメモ Docker WordPr…

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

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

WordPress taxonomy.phpのページ現在のページのtermを取得したい。

get_queried_object()はカスタム投稿タイプの時、保証されていないっぽいからget_query_var()でtermのslugを取得してget_term_by('slug', $termSlug, 'taxonomy');するのが良いっぽい!

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

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

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

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

WordPress カスタム投稿タイプのslug (URI)から投稿IDを取得したい

slug名から投稿を取得するには get_page_by_path を使う get_page_by_path( string $page_path, string $output = OBJECT, string|array $post_type = 'page' ) 出典: get_page_by_path() | Function | WordPress Developer Resources ID; echo $postID; …

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

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

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

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

HTML 本当は怖い target="_blank" 。rel="noopener" ってなに?

WordPressの投稿で別ウィンドウで開くリンクtarget="_blank"を作成すると、 <a href="{URL}" target="_blank" rel="noopener">LINK TEXT</a> のようなrel="noopener"属性を持ったaタグが出力されます。 rel="noopener" の意味 1. target="_blank" のセキュリティ上の脆弱性の問題を避ける Without this, the new …

WordPress WP_Query 複数のカスタムフィールドを条件に投稿を取得したい。

WordPressでカスタムフィールドをたくさん作ったサイトとかでは、カスタムフィールドの値を条件にして投稿を取得したいケースが多々あります。 複数のカスタムフィールドの値を条件に投稿を取得する時のメモ。 条件にするカスタムフィールドが1つのとき おさ…

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

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

WordPress サブテーマ テーマの絶対パスを取得したい。

WordPressでテーマのディレクトリの絶対パス取得をする方法のメモ テーマ構成 /themes |- /main-theme | |- functions.php |- /sub-theme | |- functions.php テーマディレクトリまでのパスの取得 get_template_directory テーマのパスを取得するのに get_te…

WordPress マルチサイト ネットワーク管理画面のURLが変?

下記のような構成でWordPressでマルチサイトを設置しました。 サイト構成 /site-root <- サイトのルートのディレクトリ |- .htaccess |- index.php |- /wordpress <- WordPress本体 |- wp-config.php メインサイトの管理画面のURLは example.com/wordpress/w…

WordPress さくらサーバーでマルチサイトにしたらリダイレクトループでサブサイトの管理画面にログインできなかった件

WordPressのマルチサイトを作成する案件があって、さくらのレンタルサーバーにWordPressをインストールしてマルチサイトの設定を行いました。 メインサイトのトップを/にして、ディレクトリ型でマルチサイトをインストールしたまでは良かったのですが、サブ…

WordPress マルチサイト設置のメモ

WordPressでマルチサイトを設置した時のメモ サイト構成 次のような構成で、WordPressの管理画面の設定からサイトが/webrootで表示されるように変更しました。 /webroot |- .htaccess |- index.php |- /wordpress |- wp-config.php マルチサイトの設定 1. wp…

WordPress 子テーマ「親テーマが見つかりません。」になるとき

WordPressで子テーマを作成してインストールしようとしたら 修正が必要なテーマ: 親テーマが見つかりません。「THEME NAME」の親テーマをインストールしてください。 というエラーが表示される時 親テーマの指定はディレクトリ名でなければならない テーマの…

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

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

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

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

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

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

WordPress WP_Query カスタム投稿の特定のtaxonomyを除く(含む)の指定方法

基本的にマニュアルに書いて有ることだけど、すぐ忘れるのでメモ。 タクソノミー(taxonomy)のパラメーター タクソノミーに関する指定は、tax_queryをキーにした配列内に指定する。 特定の term を除く(含む) WP_Queryの指定方法 operator オプジョンで指定す…

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

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

WordPress CMB2でデフォルトのページテンプレートだけにカスタムフィールドを付けたい

コードベースでWordPressのカスタムフィールドを作成できる CMB2 を愛用しています。 ( 以前 Custom-Metaboxes-and-Fields-for-WordPress だったものが CMB2 という名前になり開発されています。 ) デフォルトテンプレートの固定ページにのみカスタムフィー…