What's wp ?

What's wp ?

eycatch

ファイルへログ出力

テハ
テハ
プラグインやテーマで使えるアクション・フックのタグはなにがあるのにゃ?
ワープ
ワープ
アクション・フックのタグ順は公式サイトに載っているにゃ。プラグインはプラグインがロードされた後、テーマはfunctions.phpがロードされたあとのタグが使えるにゃ。
メリー
メリー
くわしくは以下を参照するでありますにゃ。
テハ
テハ
どこでテーマのfunctions.phpやプラグインがロードされているのかわからないのにゃ。
ワープ
ワープ
ローカル環境なら他のユーザーがアクセスしないのでファイルにログ出力して確認できるにゃ。
テハ
テハ
ファイルのログ出力はどうやるのにゃ?
ワープ
ワープ
PHPのerror_logを使うとファイルにログ出力できるにゃ。

ファイルへログ出力

error_log( "メッセージ\n", 3, ファイルパス );
メリー
メリー
くわしくは以下を参照するでありますにゃ。

Must-Useプラグイン

ワープ
ワープ
wp-content/mu-plugins/の下に以下のコードのPHPファイルを置けば、Must-Useプラグインがロードされたタイミングとアクション・フックのログがWordPressのインストールしたルートのdebug.logというファイル名に出力されるようになるにゃ。

mu-example.php

<?php
/*
 * Plugin Name: mu-example
 */

// デバッグ用ログ出力ファイルのパス定義
define( 'DEBUG_LOG_FILE', ABSPATH . "debug.log" );

// デバッグ用ログファイルが巨大にならないようあれば削除
if ( file_exists( DEBUG_LOG_FILE ) )
{
	unlink( DEBUG_LOG_FILE );
}

// mu-pluginsのプラグインが実行されたことをログ出力
error_log( "*** mu-plugin ***\n", 3, DEBUG_LOG_FILE );

// do_actionが呼ばれたらログ出力
function output_action_log()
{
	global $wp_actions, $wp_current_filter;
	if ( is_array( $wp_current_filter ) ) {
		$tag = end( $wp_current_filter );
		if ( isset( $wp_actions[ $tag ] ) ) {
			error_log( "do_action($tag)\n", 3, DEBUG_LOG_FILE );
		}
	}
}
add_action('all', 'output_action_log');

ロードのタイミング

ワープ
ワープ
同様にプラグインやテーマのfunctions.php、テンプレート・ファイルにそれぞれメッセージを変えて次のようなコードを書けば、ロードされたタイミングがわかるにゃ。

プラグインやテーマのロードタイミングのためのログ出力

error_log( "*** plugin ***\n", 3, DEBUG_LOG_FILE );
error_log( "*** parent theme functions.php ***\n", 3, DEBUG_LOG_FILE );
error_log( "*** child theme functions.php ***\n", 3, DEBUG_LOG_FILE );
error_log( "*** template ***\n", 3, DEBUG_LOG_FILE );

出力結果

ワープ
ワープ
ページを表示すると、WordPressをインストールしたindex.phpのあるディレクトリにdebug.logがあるはずにゃ。

debug.log

*** mu-plugin ***
do_action(mu_plugin_loaded)
do_action(muplugins_loaded)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
*** plugin ***
do_action(plugin_loaded)
do_action(plugins_loaded)
do_action(sanitize_comment_cookies)
do_action(wp_roles_init)
do_action(setup_theme)
do_action(unload_textdomain)
do_action(load_textdomain)
*** child theme functions.php ***
*** parent theme functions.php ***
do_action(after_setup_theme)
do_action(load_textdomain)
do_action(auth_cookie_malformed)
do_action(auth_cookie_valid)
do_action(set_current_user)
do_action(init)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_post_type)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(registered_taxonomy)
do_action(widgets_init)
do_action(register_sidebar)
do_action(register_sidebar)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_default_scripts)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_register_sidebar_widget)
do_action(wp_loaded)
do_action(parse_request)
do_action(send_headers)
do_action(parse_tax_query)
do_action(parse_query)
do_action(pre_get_posts)
do_action(parse_tax_query)
do_action(posts_selection)
do_action(parse_term_query)
do_action(pre_get_terms)
do_action(metadata_lazyloader_queued_objects)
do_action(wp)
do_action(template_redirect)
do_action(wp_default_styles)
do_action(admin_bar_init)
do_action(add_admin_bar_menus)
*** template ***
do_action(wp_head)
do_action(wp_enqueue_scripts)
do_action(enqueue_block_assets)
do_action(wp_print_styles)
do_action(wp_print_scripts)
do_action(wp_body_open)
do_action(admin_bar_menu)
do_action(wp_before_admin_bar_render)
do_action(wp_after_admin_bar_render)
do_action(loop_start)
do_action(the_post)
do_action(loop_end)
do_action(wp_footer)
do_action(wp_print_footer_scripts)
do_action(shutdown)
ワープ
ワープ
Must-Useプラグインはmu_plugin_loadedタグ以降、プラグインはplugin_loadedタグ以降、テーマはafter_setup_themeタグ以降のタグが使えることがわかるにゃ。目的によりタグの種類が異なるのでWordPressの公式サイトで確認して使ってにゃ。
テハ
テハ
よく知らないアクション・フックのタグがたくさんあるのにゃ。

コメントはこちらから