かもメモ

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

WordPress

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 という名前になり開発されています。 ) デフォルトテンプレートの固定ページにのみカスタムフィー…

WordPress 管理画面 固定ページ一覧にスラッグとテンプレート名を表示させたい

WordPressでWEBサイトを作る際に特定のページを作成するために固定ページのテンプレートを作成したりする事があります。 ただテンプレートの選択やページのURLの指定はWordPressの管理画面から行うので、テスト環境と本番環境があるような場合、本番環境でテ…

WordPress 投稿が0件でもpost_typeを取得したい。

WordPressで今のページのpost_typeを取得したい時、投稿が0件だと get_post_type() は false になってしまい上手く取得できない。get_query_var( 'post_type' ) を使えば投稿が0件でもpost_typeを取得することができる。

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

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

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

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

WordPress 4.7, 4.7.1 はAPIに致命的なバグがあって認証無しで誰でも記事を改ざんできちゃうっぽい!

WordPress 4.7, 4.7.1 のサイトは直ぐに4.7.2にアップデートするのです! Twitterで大学や国会議員や公的機関のサイトが大量に改ざんされてるという情報を朝から目にした日でした。 どうやら改ざんされていたのはWordPressのサイトの様で、事の顛末は、 Word…

WordPress 管理画面のベーシック認証が効かなくなった時のメモ

WordPressを設置する時に少しでもセキュリティを高めるために管理画面やログイン画面にベーシック認証をかけています。 ファイル構成 / |- .htaccess |- /wp | |- .htaccess | |- .htpasswd | |- /wp-admin |- index.php WordPressはwpディレクトリ内に置き…

WordPress サイトのフロントページにしている固定ページを動的に取得したい

WordPressで企業サイトなどを作っている時に固定ページをフロントページ(サイトトップ)に設定する事も多いと思います。 かなりレアケースな気もしますが、フロントページに設定しているページオブジェクトやページIDが必要になるテーマを作成する時のメモ。 …

WordPress ContactForm7 フォーム送信時に送信確認のチェックをリセットしたい

ContactForm7は送信前の確認したかのチェックボックスを設置することができます。 ただ、フォームを送信した後、エラーの有無にかかわらず送信確認がチェックされたままで、送信ボタンを押すことができる状態になったままになっています。 そこで、ContactFo…

WordPress ContactForm7 フォーム送信時に任意のjsを実行したい。

管理画面から WordPressの管理画面 > コンタクトフォームの編集画面 > その他の設定 を選択して、記入エリアにon_sent_ok:(送信完了時)、on_submit:(送信された時常に) のキーワードに続けて実行したいjavascriptのコードをテキスト形式で記述する。 on_sent…

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

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

WordPress アイキャッチの画像のIDを取得したい。

WordPressに投稿された画像を表示する際にsizesやsrcset属性を変更したい時は、画像を返す関数では実現できないので、画像IDから自分で画像パスなどを取得してimgタグを作る必要があります。 アイキャッチ(サムネイル)の画像IDを取得するにはget_post_thumbn…

WordPress 4.4 Responsive Images の size の値を変更したい。

WordPress 4.4 以降では、管理画面からアップロードされた画像を表示させる時に、wp_get_attachment_image()とかget_the_post_thumbnail()とかの関数を使ってimgタグを出力すると、自動的にsrcsetとsize属性がつくようになりました。 例えば、580px x 166px …

WordPress カスタム投稿 taxonomyアーカイブページのterm取得したい。

WprdPress独特の言い回しなのでしょうか?このtaxonomyとtermが何なのかよく分からなくなってしまいます。 taxonomy は「投稿 (post )」で言うところのカテゴリー term は「投稿 (post )」で言うところのカテゴリーに追加した1つ1つのカテゴリー カテゴリー …

PHP count(false)は1になる。

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

WordPress メディアのaltを取得したい。

投稿のサムネイルなど、管理画面のメディアに登録されている画像のalt属性を取得する方法。 get_post_meta() 関数で取得できる。 _wp_attachment_image_altをキーにして取得することができる。

WordPress 特定の固定ページを保存時に処理を実行したい。

あるページテンプレートを使用している固定ページを保存した時に、その固定ページで使用しているキャッシュを消すなどの処理をしたい時とか。 投稿(post)も・固定ページ(page)も保存時は save_post アクションフックが呼び出される。 save_post インポート機…

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

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