顧客は、自分が使用している特定のカルーセルプラグインをウィジェット化できるかどうかを尋ねます。つまり、プラグインの関数を呼び出すfunctions.php内にウィジェットを作成する必要があります。つまり、functions.phpファイルがロードされたときにその関数がWordPressで利用できるように、プラグインのコードを最初にロードする必要があるということです。それはうまくいくでしょうか?
プラグインはテーマの直前にロードされます(はい、私はこれを使うための言い訳を探しています):
しかし、どちらをコード実行のポイントとして考えるのは間違っています。ほとんどの場合、init
フックよりも早くすべてをフックして実行する必要があります。 Codexウィジェットの登録によれば、 register_widget()
はwidget_init
にフックされるべきです。
この場合、ロードの順序は関係ありません。どのような場合でも、ウィジェットが必要とする時間までにすべてがロードされます。
興味深いアプローチの1つは、一連の実行でファイルへのすべてのフックをリストすることです。
add_action( 'all', '_20161224_printer' );
function _20161224_printer( $r ){
$line = microtime(true)*10000 . ' ' . $r . "\n";
$fp = fopen( ABSPATH . 'hooks.txt', 'a+');
fwrite($fp, $line);
fclose($fp);
}
そして、あなたはこのような出力を得るでしょう:
14825992300742 pre_option_blog_charset
14825992300743 option_blog_charset
14825992300743 plugins_loaded
14825992300744 load_default_widgets
14825992300745 load_default_embeds
14825992300745 wp_audio_extensions
14825992300745 wp_audio_embed_handler
14825992300746 wp_video_extensions
14825992300746 wp_video_embed_handler
14825992300746 sanitize_comment_cookies
14825992300747 pre_option_permalink_structure
14825992300747 option_permalink_structure
14825992300748 pre_option_wp_user_roles
14825992300748 option_wp_user_roles
14825992300749 wp_roles_init
14825992300749 setup_theme
14825992300749 pre_option_template
14825992300750 option_template
14825992300750 template
14825992300750 theme_root
14825992300751 template_directory
14825992300751 pre_option_stylesheet
14825992300751 option_stylesheet
14825992300751 stylesheet
14825992300752 theme_root
14825992300752 stylesheet_directory
14825992300752 pre_option_WPLANG
14825992300753 query
14825992300754 default_option_WPLANG
14825992300755 locale
14825992300755 override_unload_textdomain
14825992300755 unload_textdomain
14825992300755 override_load_textdomain
14825992300756 load_textdomain
14825992300756 load_textdomain_mofile
14825992300756 locale
...
many many more action hooks
...
14825992302886 wp_parse_str
14825992302886 nonce_life
14825992302886 salt
14825992302886 wp_parse_str
14825992302887 esc_html
14825992302887 logout_url
14825992302887 clean_url
14825992302887 gettext
14825992302887 wp_after_admin_bar_render
14825992302888 pre_option_template
14825992302888 option_template
14825992302888 template
14825992302888 theme_root
14825992302888 template_directory
14825992302889 parent_theme_file_path
14825992302889 shutdown
全リストがWPSOの投稿あたりの30.000文字の制限に収まらなかったので、私は多くのアクションフックを削除しました。
上記のコードをプラグインの中に入れてください。あなたがテーマ
functions.php
からそれをするならば、あなたはplugins_loaded
をつかまえることはないでしょう。テーマの前にプラグインがロードされているというもう1つの証拠。
このチェックの良い点はたくさんありますが、あなたが呼び出すページテンプレートやダッシュボードにいる場合は出力が異なることに注意してください。
私は単に/?p=1
またはHello Worldページからこれを呼び出しました。
単一のプラグインを有効にしていない場合は、このコードをmu-plugins
フォルダーに入れることができます。
WP FS API を使用することをお勧めしますが、この方法は本当に簡潔です。
あなたが望んでいるのであれば、あなたはプラグインの.phpファイルの中にウィジェットを持つことができます(そしてそれらが両方とも使用できる共有グローバル変数を持つことができます)。これは サンプルコード付きのチュートリアルです しばらく前につまずいた。
また、これは 典型的なリクエストの間に実行されるアクションのリストです 、実行の順序で。 #2と#10はプラグインが最初にロードされることを示唆しています。 functions.phpについてはわかりません。