JavaScript unter Wordpress

  • Guten Abend,
    ich hoffe, dass meine Frage hier richtig plaziert ist. Es geht um die Frage, wie ich mit JS Elemente ansprechen, die zuvor von Wordpress per ShortcCode eingeführt wurden.

    In meinem Plugin steht
    [INDENT][PLAIN]include ('timer.php');
    add_action( 'init', 'timer_init' );[/PLAIN][/INDENT]

    Das ganze soll also mal einen Timer auf meiner Seite ergeben. Die timer.php lautet

    [INDENT][PLAIN]function timer_init() {
    function timer_func() {
    $ausgabe = '<script language="JavaScript" type="text/javascript">
    var s = document.getElementById("timer").innerHTML;alert(document.write(s));
    </script>';
    $ausgabe .= '<p id="timer">Testtest</p>';
    return $ausgabe;
    }
    add_shortcode('Timer','timer_func');
    }[/PLAIN][/INDENT]

    Das Problem ist, dass der das Element Timer nicht findet. Kann es damit zusammenhängen, dass dieses nicht von Beginn an im Dokument war, sondern erste per Shortcode generiert wurde?

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Link zur Seite wo der Shortcode [FONT=Courier New][Timer][/FONT] verwendet wird?

    Und findet das Plugin denn [FONT=Courier New]timer.php[/FONT]? Binde den Code mal ohne [FONT=Courier New]include(...)[/FONT] direkt in die Plugin Datei ein, um da Fehler auszuschliessen.

    Weiterhin wird Dein JavaScript Code während des Aufbaus des DOM ausgegeben und direkt geführt, das sollte eigentlich erst bei [FONT=Courier New]$(document).ready()[/FONT] o.ä. sein. So kann es sein, dass Elemente noch nicht bekannt sind.

    [size=12]PS. Nutze hier im Forum das kleine [+] Symbol und "Code" damit die Formatierung Deines Codes erhalten bleibt.[/SIZE]

    6 Mal editiert, zuletzt von b3317133 (24. Januar 2021 um 20:12)

  • Timer.php ist richtig eingebunden, das habe ich über einen alert() getestet.

    Der zweite Aspekt scheint mir der relevante zu sein. Wir kann ich das ändern?

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

  • Um die entspr. jQuery Mechanismen wie[FONT=Courier New] jQuery(document).ready()[/FONT] nutzen zu können, binde Dein Script über [FONT=Courier New]add_action( 'wp_enqueue_scripts' ... )[/FONT] mit einer Dependency für [FONT=Courier New]jquery[/FONT] ein, mehr dazu hier (google) und hier (developers.wordpress.org).

  • Oh je, das wird ja noch richtig kompliziert. Danke für den Tipp.Ich arbeite mich am kommenden WoE da mal rein.

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

  • Manchmal diegt die Gemütlichkeit: Bevor ich mich mit wp_enqueue_scripts beschäftigt habe, habe ich noch ein wenig rumprobiert. Und tatsächlich klappt es, wenn man das JS-Skript nach dem HTML-Code einbindet, also die beiden $ausgabe = ... Befehle tauscht.

    Mühsam ernährt sich das (Nichtinformatiker-)Eichhörnchen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!