it-swarm.com.de

Gibt es eine Möglichkeit, wp_head () -Inhalte zu lesen oder aufzulisten?

Ich arbeite an einem CSS- und JS-Compiler und muss einen Weg finden, den Inhalt von wp_head() aufzulisten.

Ich versuche, eine Liste aller CSS/JS-Dateien und Inline-CSS auf einer beliebigen Seite zu erhalten.

Wenn Sie die Aktion wp_head aktivieren, wird nichts ausgeführt

Ich hatte gehofft, dass so etwas funktionieren würde

function head_content($list){

    print_r($list);


}

add_action('wp_head', 'head_content');

jede Hilfe wird gebeten.

UPDATE:

etwas zum Laufen gebracht

function head_content($list){

    print_r($list);

    return $list;

}

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

hier werden alle CSS/JS-Dateihandles aufgelistet

3
Benn

Ich wollte im Header suchen und ersetzen, aber weder @majick noch @Samuel Elh haben direkt für mich funktioniert. Wenn ich ihre Antworten kombiniere, erhalte ich, was letztendlich funktioniert:

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

Es wurde zu functions.php meines untergeordneten Themas hinzugefügt.

2
Putnik

Eine einfache Lösung besteht darin, in einer benutzerdefinierten Funktion auf wp_head zu warten, genau wie es WordPress in der Funktion wp-includes/general-template.php for wp_head() tut.

Ich meine so etwas wie:

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

Verwenden Sie später Regex oder ein anderes Tool, um die Inhalte zu filtern, auf die Sie abzielen.

Hoffentlich hilft das.

3
Samuel Elh

Sie können die Ausgabe von wp_head puffern, indem Sie einige Wrapper-Aktionen hinzufügen:

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();}

Sie können dann global $wpheadcontents; an einer anderen Stelle aufrufen, um auf den Inhalt zuzugreifen und ihn zu verarbeiten.

In diesem Fall kann es jedoch einfacher sein, die gesuchten Informationen direkt aus den globalen Variablen $wp_styles und $wp_scripts abzurufen.

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