web-dev-qa-db-ja.com

Wp_headに出力されている内容を、テーマやWordpress全般を問わずどのように変更できますか?

私はYSLOWを使用して私のサイトのパフォーマンスに取り組んできました、そしてWordpressが私が必要としていないことを私の文書の頭の中に出力していることに気づきました。

たとえば、私はすでにGoogle CDNからjQuery 1.9を呼び出しているので、wp-includesでjQueryを呼び出す必要はありません。

また、プラグインには必要のないスタイルシートが含まれています(私のテーマではこれらのスタイルの99%を上書きしているため)ので、その呼び出しも削除したいと思います。

それで、Wordpressがそれをそこに置いているのか(wp-includes jQuery呼び出しのように)それともプラグインがそれをそこに置いているのか(スタイルシート呼び出しのように)どうやってwp_head()関数によって出力されるものを編集できますか

5
Joel Glovier

まず、(および 特に )jQueryを含む、WordPressのコアバンドルスクリプトのカスタムバージョンをエンキューしないでください。

第二に、あなたの質問に答えるために:これらのプラグインスクリプトとスタイルシートは エンキュー を使って、 add_action() を使って、以下のアクションフックのうちの1つにフックされます:

  • wp_head
  • wp_enqueue_scripts
  • wp_print_scripts
  • wp_print_styles

(他にもありますが、それらが最もありそうです。)

コールバック内では、以下の関数がエンキューに使用されます。

そのため、foobar.cssという名前のプラグインがエンキューされたスタイルシートの場合は、wp_enqueue_style()の呼び出しについてプラグインファイルを調べてから、それが呼び出されるコールバック関数の名前をメモする必要があります。次に、そのコールバック関数を参照するadd_action()呼び出しを見つけます。例えば。:

add_action( 'wp_head', 'pluginname_enqueue_styles' );

その呼び出しが見つかったら、 オーバーライド 自分自身で remove_action() を使用してそれを実行できます。

remove_action( 'wp_head', 'pluginname_enqueue_styles' );
5
Chip Bennett

デフォルトのバージョンをCDNでホストされているバージョンで上書きするのは悪い習慣ではありません。ただし、すべてのプラグインが互換性のあるバージョンを使用していることを確認するために、責任があります。徹底的にテストするようにしてください。

デフォルトのjQueryをCDNバージョンで上書きするには、functions.phpに次のようなものを追加します。

function replace_jquery() {
    if (!is_admin()) {
        wp_deregister_script('jquery');
        wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', false, '1.9.1');
        wp_enqueue_script('jquery');
    }
}
add_action('init', 'replace_jquery');
2
Matt Shelton