it-swarm.com.de

Ist es möglich, den Style aus dem wp_footer () -Hook zu entfernen und den wp_head () -Hook hinzuzufügen?

Ich muss die Registrierung dieses Enqueue-Stils von wp_footer () aufheben und ihn mit hook wp_head () zum Anfang der Site hinzufügen. Ist dies möglich?

Ich optimiere mein Theme für die Validierung in W3C und eine der Anforderungen von W3C ist, dass alle Stile innerhalb des Tags <head></head> liegen. Ich verwende ein bestimmtes Plugin mit dem Namen Crayon Syntax Highlighter und dieses Plugin fügt einen Stil am Ende von ein die Seite (wahrscheinlich mit wp_footer() hook).

Der Name/die ID des Skripts ist crayon:  enter image description here 

Ich habe alle diese Funktionen ausprobiert, aber keinen Erfolg:

wp_deregister_style( 'crayon' );
wp_dequeue_style( 'crayon' );
remove_action( 'wp_enqueue_style' , 'crayon' , 10 );

wp_deregister_style( 'crayon-css' );
wp_dequeue_style( 'crayon-css' );
remove_action( 'wp_enqueue_style' , 'crayon-css' , 10 );
1
rafaelfndev

Wenn Sie sich den Quellcode ansehen, können Sie sehen, dass wp_enqueue_style( 'crayon' ) in Crayon::enqueue_resources() aufgerufen wird, das selbst entweder von Crayon::the_content() oder von Crayon::wp_head() aufgerufen wird. Der Code in Crayon::wp_head lautet:

if (!CrayonGlobalSettings::val(CrayonSettings::EFFICIENT_ENQUEUE) || CrayonGlobalSettings::val(CrayonSettings::TAG_EDITOR_FRONT)) {
  CrayonLog::debug('head: force enqueue');
  // Efficient enqueuing disabled, always load despite enqueuing or not in the_post
  self::enqueue_resources();
}

Damit wird der Stil nur dann in die Warteschlange gestellt, wenn bestimmte Einstellungen aktiviert sind. Andernfalls wird der Stil nur aus dem the_content-Filter in die Warteschlange gestellt, der ausgelöst wird, nachdem wp_head bereits ausgegeben wurde.

Sie haben also zwei Möglichkeiten:

  1. Stellen Sie das CSS auf allen Seiten in der Kopfzeile in die Warteschlange
  2. Habe das CSS nur auf notwendigen Seiten aber in der Fußzeile in die Warteschlange gestellt
3
Nathan Johnson

Hmmmm .. die Frage ist mir nicht sehr klar, wenn Sie ein wenig mehr Informationen über Ihr Problem (wie die spezifischen Dateien und Skripte, die Sie ändern müssen) zur Verfügung stellen könnten, wäre toll. Soweit ich verstanden habe, werde ich versuchen, Ihnen zu helfen. Vermeiden Sie zunächst Plugins, es sei denn, Sie benötigen sie wirklich wirklich. Möglicherweise versuchen Sie, JavaScript und CSS, die das Rendern blockieren, aus dem Tag zu entfernen. Wenn Sie eine Seite über Ihren Browser laden, laden Sie zunächst die Skripte zwischen den Tags herunter, indem Sie diese Skripte in Ihre Fußzeile verschieben ( footer.php oder /public_html/wp-content/themes/yourtheme/footer.php) Die Webseite rendert alle Daten, die zuerst visualisiert werden müssen, beginnend am oberen Rand der Seite und zuletzt die Skripte in der Fußzeile .php Datei. Ich wette, Crayon Syntax Highlighter verursacht das Problem. Versuchen Sie einfach, diesen <!-- W3TC-include-js-head --> vor das schließende </body>-Tag zu setzen.

Wenn Sie wp_enqueue_scripts verwenden möchten, sehen Sie sich dieses Beispiel an

function themeslug_enqueue_style() {
    wp_enqueue_style( 'core', 'style.css', false ); 
}

function themeslug_enqueue_script() {
    wp_enqueue_script( 'my-js', 'filename.js', false );
}

add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_style' );
add_action( 'wp_enqueue_scripts', 'themeslug_enqueue_script' );

Ich hoffe das hilft, viel Glück Alter. :)

1
JakeDD