web-dev-qa-db-ja.com

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

私は今WordPress 3.1.4を使っています。私はどこで(どのフックを)使用するのか混乱しています。

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

質問:

  • 正しいフックはどれですか?
  • フロントエンドはすべてinitにスクリプト/スタイルを登録/エンキューしますか
  • どうしてadmin_print_styles-{xxx}がないの?
43
JM at Work

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

  • 時間内-スクリプト/スタイルがページに出力されるよりも早い場合、そうでない場合は遅すぎます。

  • 条件付きである必要があります。そうでない場合は、必要のないものをロードし、パフォーマンスと機能の問題を引き起こします。このため、WP環境をロードする必要があります。

プロセスの3つの段階

  1. register-スクリプト/スタイルに関する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はこれとは何の関係もありませんが、動作しますが、-これまで使用していたCodexの推奨事項は間違っていました;

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

  • wp_print_*フックはレジスタ/キューには適していません、出力が既に発生している場合のコード内のポイントです。これらは、手動/カスタムスクリプト/スタイルの出力に適しています。

管理者はどうですか?

まあ、そこの機能はさらに複雑で、精巧でネストされています。

  • まず最初に単にadmin_enqueue_scriptsフックを使用(条件付きのものには$hook_suffix globalを渡します)、すべての場合、ほとんどの場合うまく動作します。

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

ログインはどうですか?

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

63
Rarst