web-dev-qa-db-ja.com

フック内で起動される関数はどこにありますか?

私はWPが初めてですが、過去に他のCMSを使用しました。

練習のために、シンプルなWooコマースストアを作りたいと思いました。 WP、Woo-commerce、Woo-commerce Store Frontテーマをインストールしましたが、すべてうまくいきました。

それではテーマのカスタマイズを始めます。最初に変更したいのは、ヘッダーに新しいロゴを追加することです。私はStorefrontのテーマディレクトリでheader.phpを開き、ロゴ画像があるべき場所を含むdivを見つけました。

do_action( 'storefront_header' );

ディレクトリを調べましたが、storefront_headerファイルまたは関数が見つかりません。

それで、ここで何をするつもりですか?個々の要素の機能やPHPファイルを見つけるためのガイドやマップはありますか?

テンプレート構造内で、作業したい要素をどのように見つけますか。

1
MeltingDog

Storefrontのheader.phpの現在のバージョンを見てください。

/**
 * Functions hooked into storefront_header action
 *
 * @hooked storefront_skip_links                       - 0
 * @hooked storefront_social_icons                     - 10
 * @hooked storefront_site_branding                    - 20
 * @hooked storefront_secondary_navigation             - 30
 * @hooked storefront_product_search                   - 40
 * @hooked storefront_primary_navigation_wrapper       - 42
 * @hooked storefront_primary_navigation               - 50
 * @hooked storefront_header_cart                      - 60
 * @hooked storefront_primary_navigation_wrapper_close - 68
 */
do_action( 'storefront_header' ); ?>

そのコメントブロックはstorefront_headerアクションにフックされているすべてのコールバック関数(優先度付き)の概要を示しています。

文字列'storefront_header'についてstorefrontディレクトリのファイル内のテキストを検索すると、これらの関数が見つかります。これらの関数が表示される場所を整理する標準的な方法はありませんが、functions.phpから始めてそこからすべてのコードを手動で追跡することができます。検索はより効率的です。

storefront_site_brandingはロゴの表示方法を処理する関数です。これはstorefront/inc/storefront-template-functions.phpにあります。

2
Dave Romsey

do_actionはテンプレートの階層構造とは直接関係がありません。基本的に、特定のアクションがいつトリガーされるかを観察したい観察者にとってのトリガーです。

オブザーバを見つける最良の方法は、アクションの名前(この場合はstorefront_header)をコードで検索することです。この場合はテーマファイルに限定されますが、プラグインを「必要とする」テーマで作業している場合は、おそらくプラグインのコードも検索する必要があります。

よくあること(特にコアコード)は、文字列を組み合わせて動的に作成されるアクションです。したがって、storefront_headerを検索しても結果が得られない場合は、アクションのプレフィックスまたはサフィックスを検索してください

2
Mark Kaplun