web-dev-qa-db-ja.com

Wp_head()の内容を読んだり、一覧表示したりする方法はありますか?

私はCSSとJSのコンパイラに取り組んでおり、wp_head()の内容をリストする方法を見つける必要があります

すべてのCSS/JSファイルのリストとインラインCSSを任意のページに表示しようとしています。

Wp_headアクションをフックしても何も起こりません

私はこのようなものがうまくいくことを願っていました

function head_content($list){

    print_r($list);


}

add_action('wp_head', 'head_content');

任意の助けは大歓迎です。

_更新_

何かうまくいった

function head_content($list){

    print_r($list);

    return $list;

}

add_filter('print_styles_array', 'head_content');
add_filter('print_script_array', 'head_content');

これはすべてのcss/jsファイルハンドルをリストします

3
Benn

ヘッダを検索して置換したいのですが、@ majickと@Samuel Elhのどちらの回答も私に直接働きませんでした。それで、彼らの答えを組み合わせることで私は結局うまくいくものを得ました:

function start_wp_head_buffer() {
    ob_start();
}
add_action('wp_head','start_wp_head_buffer',0);

function end_wp_head_buffer() {
    $in = ob_get_clean();

    // here do whatever you want with the header code
    echo $in; // output the result unless you want to remove it
}
add_action('wp_head','end_wp_head_buffer', PHP_INT_MAX); //PHP_INT_MAX will ensure this action is called after all other actions that can modify head

それは私の子供のテーマのfunctions.phpに追加されました。

2
Putnik

簡単な解決策は、WordPressがwp_head()関数のwp-includes/general-template.phpで行うのと同じように、カスタム関数で wp_head を監視することです。

私は何かを意味します:

function head_content() {
    ob_start();
    do_action('wp_head');
    return ob_get_clean();
}
// contents
var_dump( head_content() );

後で、正規表現または他のツールを使用して、ターゲットにしているコンテンツをフィルタします。

それが役立つことを願っています。

3
Samuel Elh

ラッパーアクションを追加することで、wp_head出力をバッファリングできます。

add_action('wp_head','start_wp_head_buffer',0);
function start_wp_head_buffer() {ob_start;}
add_action('wp_head','end_wp_head_buffer',99);
function end_wp_head_buffer() {global $wpheadcontents; $wpheadcontents = ob_get_flush();}

その後、他の場所でglobal $wpheadcontents;を呼び出してコンテンツにアクセスし、それを処理することができます。

ただし、この場合は、探している情報をグローバルの$wp_stylesおよび$wp_scripts変数から直接取得するほうが簡単です。

add_action('wp_enqueue_scripts','print_global_arrays',999);
    global $wp_styles, $wp_scripts;
    echo "Styles Array:"; print_r($wp_styles);
    echo "Scripts Array:"; print_r($wp_scripts);
}
2
majick