1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

JavaScript unter Wordpress

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von ASenna, 24. Januar 2021.

  1. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    145
    Zustimmungen:
    0
    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
    include ('timer.php');
    add_action( 'init', 'timer_init' );​

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

    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');
    }​

    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?
     
  2. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.660
    Zustimmungen:
    1.783
    Link zur Seite wo der Shortcode [Timer] verwendet wird?

    Und findet das Plugin denn timer.php? Binde den Code mal ohne include(...) 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 $(document).ready() o.ä. sein. So kann es sein, dass Elemente noch nicht bekannt sind.

    PS. Nutze hier im Forum das kleine [+] Symbol und "Code" damit die Formatierung Deines Codes erhalten bleibt.
     
    #2 b3317133, 24. Januar 2021
    Zuletzt bearbeitet: 24. Januar 2021
  3. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    145
    Zustimmungen:
    0
    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?
     
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.660
    Zustimmungen:
    1.783
    Um die entspr. jQuery Mechanismen wie jQuery(document).ready() nutzen zu können, binde Dein Script über add_action( 'wp_enqueue_scripts' ... ) mit einer Dependency für jquery ein, mehr dazu hier (google) und hier (developers.wordpress.org).
     
  5. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    145
    Zustimmungen:
    0
    Oh je, das wird ja noch richtig kompliziert. Danke für den Tipp.Ich arbeite mich am kommenden WoE da mal rein.
     
  6. ASenna

    ASenna Well-Known Member

    Registriert seit:
    20. Januar 2017
    Beiträge:
    145
    Zustimmungen:
    0
    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.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden