クエリストリング

WordPressのパフォーマンスなら、静的リソースからクエリ文字列を削除する課題がよく発生します。CSSファイルとJavaScriptファイルのURLの最後には、通常domain.com/style.css?ver=4.6などのファイルバージョンがあります。cache-control:publicヘッダーがあっても、クエリ文字列をキャッシュできないサーバー及びプロキシサーバーがあります。
そのため、クエリ文字列を削除するとキャッシングが改善される場合があります。これにより、GTMetrixおよびPingdomに表示される「静的リソースからクエリ文字列を削除せよ」警告もなくなります。
WordPressの静的リソースからクエリ文字列を削除する方法について 2019

the_title hook でタイトルを操作

https://developer.wordpress.org/reference/hooks/the_title/

add_filter( 'the_title', 'wpb_sponsored' );
function wpb_sponsored( $title ) {
   global $post;
   $sponsored_text = '<span class="sponsored_text"> Sponsored Post</span> ';
   $sponsored = get_post_meta($post->ID, 'sponsored', true);
   if( $sponsored == 'true' && in_the_loop() ){
       return $sponsored_text.$title;
   }
   return $title;
}

https://www.wpbeginner.com/wp-tutorials/how-to-add-sponsored-post-prefix-to-post-title-in-wordpress/ 2023

↓引数2つでpost_idをとるのがよい

add_filter( 'the_title', 'wpb_sponsored', 10, 2 );
function wpb_sponsored( $title, $post_id ) {
   $sponsored_text = '<span class="sponsored_text"> Sponsored Post</span> ';
   $sponsored = get_post_meta($post_id, 'sponsored', true);
   if( $sponsored == 'true' ){
       return $sponsored_text.$title;
   }
   return $title;
}

https://wordpress.stackexchange.com/questions/309151/apply-the-title-filter-in-post-page-title-but-not-in-menu-title

サブループ(Secondary Loops)

WordPress が自動的に取得したデータ(メインクエリ/$wp_query)とは異なる条件のデータ(サブクエリ)を使って表示するループをサブループや Secondary Loops と呼びます。

WordPress のループやグローバル変数 $wp_query 2019

https://developer.wordpress.org/reference/functions/in_the_loop/

in_the_loop() はメインクエリglobal $wp_query; を参照するので
サブループ(Secondary Loops)のループの中かの判定には使えない。

いっぽう、query_posts関数を使用せずに、get_posts関数を使用してループをカスタマイズする方法があります。
この場合は、$wp_queryオブジェクトは書き換えられず、あくまでも「メインループ」とは別のループとして動作します。
https://morilog.com/wordpress/tips/is_main_query_in_the_loop/

WordPressの表示フローとLoopとthe_title()〜いろいろ考えたメモ〜 | Webourgeon 2013

投稿タイプ

post page attachment revision nav_menu_item custom_css customize_changeset

https://ja.wordpress.org/support/article/post-types/

nav_menu_itemもpostとして保存されている。

WordPress の投稿タイプ 2022

add_filter

第1引数:フックする箇所
第2引数:追加挿入する処理を書いた関数
第3引数:優先順位(省略可能で初期値は10、値が小さいほど優先)
第4引数:関数が受け取る引数の個数(省略可能で初期値は1)

WordPressプラグイン処理の実行後にフックして処理を追加挿入する方法 – add_filter()の優先順位の変更 | 日常スコープ 2018

WordPress session ログイン状態

WordPressでsession_id()を実行しても値が返って来なかったので調査したときの覚書。
環境: PHP 7.4.19, WordPress 5.9.1
...
一言でいうならWordPressはセッション管理を自前で行っている。
WordPressのSessionの仕組み 2022

cookie + wp_user_meta session_tokens (DB) で
phpのセッションの仕組みを使用していない。

wordpress デバッグ メモリ使用量

Query Monitor プラグイン
https://ja.wordpress.org/plugins/query-monitor/

【開発者必須】Query Monitor の使い方(おすすめWordPressプラグイン) | push.tokyo

WordPress 6.2.2 管理画面で最大メモリ使用量10MB弱

plugintests.com

https://plugintests.com/#faq

Performance
Memory usage: 2.43 MiB
The average PHP memory usage increased by this amount after activating by the plugin.
Page speed impact: 0.464 seconds
The average page load time increased by this amount after activating the plugin.

https://plugintests.com/plugins/wporg/all-in-one-seo-pack/latest

子テーマ 作成

WordPressで子テーマを作成する方法(詳細ガイド) 2023

子テーマの子テーマは作成できない

WordPress の仕様で「孫テーマ」のようなものは作れないようだ。
WordPress で孫テーマは作れない|with a Christian Wife 2020

しかし親テーマで以下のように記述しておけば、子テーマで同じ関数を宣言するだけでフックを上書きすることができます。

if ( !function_exists( 'bw_image_instruction' ) ) { //関数が存在しなければ実行

	function bw_image_instruction() {
		//ここに処理を記述
	}
	add_action( 'after_setup_theme', 'bw_image_instruction' );

}

【WordPress】親テーマのフィルターフック/アクションフックを無効化して上書きする方法 | Bamboo Works(バンブーワークス)