2017-09-20 3 views
1

Ich versuche, dieses Skript an der Ausführung zu stoppen, wenn der Besucher angemeldet ist.Rennt Code nicht für eingeloggte Benutzer

Was das Skript tut, ist defer und Asynchron-Attribut zu JavaScript-Dateien hinzufügen. Aber es bricht die Website, wenn sie für eingeloggte Besucher erledigt wird.

Nach dem Code, der in der functions.php Datei ist:

function js_async_attr($tag) 
{ 
    if (!is_user_logged_in()) 
    { 
     $scripts_to_exclude = array('script1.js', 'script2.js', 'script3.js'); 
     foreach($scripts_to_exclude as $exclude_script) 
     { 
      if(true == strpos($tag, $exclude_script)) 
      return $tag; 
     } 
     return str_replace(' src', ' defer async src', $tag); 
    } 
} 
add_filter('script_loader_tag', 'js_async_attr', 10); 

Aber es funktioniert nicht richtig, wird angenommen, nur für angemeldete Besucher aus auszuführen. Aber es läuft nicht für ausgeloggte Besucher und bricht die Seiten für eingeloggte Besucher.

Antwort

1

Sie fügen den Filter unabhängig vom eingeloggten Status hinzu, daher müssen Sie auch einen Wert zurückgeben. Fügen Sie einfach return $tag; als letzte Zeile Ihrer Funktion außerhalb des if Blocks hinzu.

Verwandte Themen