スクリプトとスタイルを登録/エンキューする適切な場所はどこですか


43

現在、WordPress 3.1.4を使用しています。私はどこ(どのフック)を使うのか混乱しています:

  • 登録および/またはエンキューする
  • スクリプトとスタイル
  • フロントエンドとバックエンドで?

質問:

  • 使用する正しいフックはどれですか?
  • すべてのフロントエンドの登録/エンキュースクリプト/スタイルはinit
  • なぜないのadmin_print_styles-{xxx}ですか?

回答:


62

登録とキューイングが適切に重要な理由

  • それは時間内でなければなりません-スクリプト/スタイルがページに出力されるために立ち上がるよりも早く、そうでなければ手遅れです。

  • それは条件付きでなければなりません-さもなければ、あなたはそれを必要としないものをロードし、パフォーマンスと機能性の問題を引き起こすので、これには後期にロードされたWP環境が必要です。

プロセスの3つの段階

  1. 登録 -スクリプト/スタイルに関するWPの詳細を説明し、その情報を保存します。

  2. enqueue-(多くの場合、1回のwp_enqueue_*()呼び出しでレジスタと一緒にまとめられます)-これは、設定(依存関係、ヘッダー/フッターの読み込み)に従って、キューにスクリプト/スタイルを追加するようにWPに指示します。

  3. print-これは、WPがキューを処理し、それ自体に固有の何かをロードしようとしたとき、またはwp_print_*()関数で明示的に実行したときに発生します。

関数とフックのフロントエンド構造

  • wp_head()

    • wp_head

      • (1) wp_enqueue_scripts()

        wp_enqueue_scripts «これが必要なものです

      • (8) wp_print_styles()

      • (9) wp_print_head_scripts()

  • wp_footer()

    • wp_footer

      • (10) wp_print_footer_scripts()

さらに深くなりますが、これはシンプルであり、重要なポイントには十分です:

  • wp_enqueue_scriptsフロントエンドでスクリプトとスタイルを登録およびキューイングするのに最も適切なフックであり、特にそのためにあります。

  • initこれとは何の関係もありませんが、動作しますが、- それだけを使用するための過去のコーデックス勧告は間違っていました

  • wp_print_footer_scripts()呼び出し前の任意の時点で、フッター用のキュースクリプト(スタイルではありません)で回避できます。

  • wp_print_*フックはregister / queueに適切ではありません。それらは出力が既に発生しているときのコード内のポイントです。これらは、手動/カスタムスクリプト/スタイルの出力に適しています。

管理者はどうですか?

まあ、そこの機能はさらに複雑で、複雑で入れ子になっています。

  • まず最初に、すべてにフックを使用しますadmin_enqueue_scripts$hook_suffix条件付きの場合グローバルに渡されます)。ほとんどの場合、うまく機能します。

  • 複雑なものが必要な場合- admin-header.php適切なフックを探してそこから掘ります。

ログインはどうですか?

という名前の特定のフックがありlogin_enqueue_scriptsます。


うーん別の質問への別の答えで、私は推薦されましたadmin_print_scripts-{xxx}。私はそれadmin_print_scriptsが呼び出されたが、-{xxx}例えばではないことがわかりました。-edit.php例えば。でエンキューのその答えどのように権利をであるadmin_print_scripts-xxx、あなたは何を代わりにお勧めします-私は(metabox用)カスタムポストタイプの追加/編集ページでスクリプト/スタイルを含めると仮定
職場でJM

5
私の個人的な意見のように、@ JM at Work- *print*あなたが本当にそれらを必要とする理由を本当に知っていない限り、フックに近づかないでください。そして、全体的には印刷用であり、キューではありません。admin_enqueue_scriptsフックは$hook_suffix、これらの動的フックで使用される変数と同じ変数を渡します。
11年

$hook_suffix編集ポートフォリオページのpost.phpのように見えるのはなぜですか?それはedit.phpでもあると思いましたが、通常の投稿ではなくポートフォリオを編集/投稿しているかどうかをどのように判断しますか?
JM at Work

Worksの@JMは、その変数がやや厄介であることを正直に言っています:)独自のプラグインでは、それを扱うのが簡単です(add_*_page()関数の戻り)が、ネイティブWP画面では異なることがあります。
11

残念ながら、フックをwp_footerからwp_enqueue_scriptsまたはadmin_print_scriptsに変更すると、CSSは消え、ソースコードのどこにも表示されません。これは私が使用するコードです:add_action( 'wp_enqueue_scripts'、 'addCSS'); それは機能しません、これは機能しますadd_action( 'wp_enqueue_scripts'、 'addCSS'); ただし、CSSがフッターに追加されることは明らかです。何が間違っていますか?
タロン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.