Eigenes JS Script funktioniert nicht

  • Einen wunderschönen Guten Abend,

    benutze seit zwei Tagen WP, bin gerade dabei mein eigenes Theme zu erstellen und hab viele Fragen. :lol:
    Eine reicht aber erstmal:wink: und zwar hab ich erstmal den ganzen html code von meinem Template in die Index.php kopiert und alles soweit angepasst, das ich es als Theme aktivieren kann. Es funktioniert auch, nur JS will nicht


    mach ich da irgend was falsch?

    Hab bei google etwas gefunden

    Zitat


    wichtig ist, dass die eigenen Scripte über einen Schlüssel registriert sind und diese Schlüssel gibt man dann nur als Voraussetzung mit.


    trifft dieses auf mich auch zu, wenn ja wäre ich über einen Link dankbar, wo ich nachlesen kann wie ich das registrieren hinbekomme.

    MfG OpSi

    • 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

  • Naja... die IE lte 7 conditional Tags gelten nur für Stylesheets und nicht für Scripts.. Weil ich heute grad dran gearbeitet habe, foldender Code als Bsp (wandert zB in die functions.php).

    Ähnlich funktioniert es auch mit wp_enqueue_script();, nur dass man das auch in den wp_footer(); hook des Themes laden kann....

    Soweit alles klar?

  • Vielen Dank, soweit alles klar, werde es gleich mal versuchen, wird aber Stunden dauern bis es funktioniert, php kann ich nehmlich garnet.:lol:

    Das einzige was ich net versteh, ist das mit der Priorität, wie weiß ich welche Priorität ich wann setz?

  • Erstmal: http://forum.wordpress-deutschland.org/plugins-und-wi…nditionals.html

    Hatte nämlich gestern das Problem. Die Priorität ist die Priorität in der "Ladeliste". Kleine Zahl = lädt früher. Von Haus aus haben alle functions, die an einem action hooks (also ein Haken, an dem man Code einfügen kann) hängen, die Priorität 10. D.h. wenn alle dieselbe Priorität haben (also nix angegeben ist), dann werden sie in der Reihenfolge ausgegeben, in der sie im Code angegeben sind. Das kann man mit der Priorität ändern. Das ist auch keine native Php-function, sondern schlichtweg eine function, die zwar in php programmiert wurde, aber nur in wp zur Verfügung steht. Diese function (add_action) akzeptiert Parameter. Und zwar (siehe Codex): Name des action hooks, Name der function, die dort ausgeführt werden soll und "Ladereihenfolge"/Priorität.

    Soweit alles klar?

    Edit: http://codex.wordpress.org/Function_Reference/add_filter
    Edit: http://codex.wordpress.org/Function_Reference/add_action

    Beide Funktionen sind Teil der Plugin API.

  • Erstmal vielen Dank für die Erklärung, ich hab jetzt viel über dieses gelesen

    1. wp_deregister_script();
    2. wp_register_script();
    3. wp_enqueue_script();

    hab verschiedene Beispiele angewandt, aber irgend wie bekomm ich es net hin, ich werde da net schlau draus. Es sind ja 37 JavaScript Scripte, 9 davon werden im Header aufgerufen und die anderen über script.js etc...
    In der footer.php hab ich folgendes JS stehen


    selbst dieses führt er nicht aus, das kann doch aber net so schwer sein.
    Hab ich jetzt so viel gelesen, das ich jetzt noch arger auf der Leitung steh.:lol:

    //EDIT

    Das JS Script in der footer.php wird endlich richtig ausgeführt.
    Mit

    PHP
    <?php wp_enqueue_script( 'script',  plugins_url($path = 'themes/sun/js/script.js'), array( 'jquery'), '1.3.2' ); ?>


    hab ich es zum laufen bekommen. Aber wie ich das jetzt mit den andern datein schaffe, keine Ahnung.

    Einmal editiert, zuletzt von OpSi (10. November 2010 um 15:53)

  • Mach erstmal für all Deine scripts, die in den head wandern eine function, die all die wp_enqueue_script Aufrufe enthält und eine für die footer-Aufrufe und leg die in die functions.php. Dann setze darunter die add_action Aufrufe. Ein direkter Aufruf von wp_enqueue_script ist oftmals fehl, weil Du ja nicht wirklich weißt, wo Du das dann lädst. Das sollte Problemlos funktionieren. wp_deregister und wp_register brauchst Du erstmal nicht.

    Was Du genau mit der Liste oben machst, versteh ich leider nicht. <footer> ist ein Html5 Element? Und 37 scripts sind ein bissl "overhead", oder? ;) Schau mal mit Firebug, wie lange Deine Seite da zu laden hat... Die aktuelle, mit WP verschiffte jQuery Version ist übrigens 1.4.irgendwas (Edit: Vielleicht liegt das eine oder andere an der falschen Version von jQuery. Du machst es ja davon abhängig. Die Frage ist welche Version geladen wird)

  • Ich bekomm es einfach net hin

    Code
    function load_custom_script() {
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/script.js');
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/cufon-yui.js');
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/Grandesign_Neue_Roman_400.font.js');
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/Grandesign_Neue_Roman_700.font.js');
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/Delicious_500.font.js');
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/cufon-replace.js');
        wp_enqueue_script('my_script', WP_CONTENT_URL . 'themes/sun/js/date.js');
      }
      add_action('wp_head', 'load_custom_script', 1);

    der Code is bestimmt totaler Quatsch? Hab über google mal gesucht, es hat aber bis jetzt nix funktioniert, oder ich hab es jedes mal falsch gemacht.

    Wegen der Liste, also dieses Template hab ich mir gekauft klick und rechts oben is ein kleiner Schnippel (Advanced Edition) das is die Liste. Wenn ich es irgend wann mal geschaft hab, werde ich javascript nur dann laden wenn ich es brauch, hab ich gelesen das dies geht.

  • Schönes Theme....

    Ad Deine function) Sollte eigentlich funktionieren. Poste mal bitte einen Link. Ich denke, da fehlt nur ein "/" vor dem Pfad zu Themes...

    Ad nur dann laden wenn) Schau mal in den Codex: Conditional Tags.

  • Danke

    Hatte es nur unter xampp laufen, habs mal hochgeladen klick.
    Dieses / had ich davor gesetzt hat aber nix gebracht.


    //EDIT
    Also die Liste funktioniert, aber auch nur glaub ich, da ich die $ mit jQuery ersetzt hab, muß ich das dann in jedem JS ändern?

    Einmal editiert, zuletzt von OpSi (11. November 2010 um 10:31)

  • Nachdem ich dort jetzt nur jQuery sehe, nehm ich an, dass der Rest gar nicht erst geladen wurde? Wenn dem so ist, dann müssen wir uns jetzt wirklich was überlegen.

    Eigentlich sollte es auch bei xampp funktionieren und keine Unterschied machen...

    Edit: Dort, wo 'my_script' steht, hast Du aber schon jeweils einen einzigartigen Namen vergeben? Falls da einer doppelt ist, oder sich mit etwas aus dem Core doppelt, wird's nämlich nicht geladen, da WP glaubt, dass es schon vorhanden ist. Und pack gleich nach

    PHP
    function bla() { "if( !is_admin() ) { wp_usw. } }

    rein.

  • My_script stand bei allen ups, hab ich geändert und so sieht es jetzt aus

    alles in der functions.php drin, aber funktionieren tut nix. Ich glaub ich bin zu blöd dafür, oder ich hab was vergessen, hmmm keine Ahnung.


    //EDIT
    Wieso sagt mir das keiner das ich

    PHP
    <?php my_script(); ?>


    in den Header einfügen muss, tztztz. Jetzt wird es auch angezeigt, aber alles funktioniert immer noch net.

    Diese JS Dateien werden in der script.js includet


    das ist was er anscheint net macht, glaub ich zumindest.

    Einmal editiert, zuletzt von OpSi (11. November 2010 um 23:40)

  • Nur kurz: wp_head() ist ein "Action Hook" aus dem WordPress core, der in jedem Theme (in der header.php) vorhanden sein sollte. Das ist er nicht, daher musst Du die function my_script() händisch dort einfügen und nicht über den hook. Viele Plugins verlassen sich darauf, schau also Dein Theme durch ob Du die folgenden Action Hooks auch drinnen hast:
    wp_head, wp_meta, comments_form und wp_footer (alle mit "();" hinten dran).

    Beim <script>-teil sollte am Anfang
    jQuery.noConflict();
    stehen. Dann kannst Du "$" in Deinen Definitionen durch "jQuery" ersetzen. Dadurch kollidiert es nicht mit anderen Core-Bibliotheken wie Scriptacolus, die zB von einem Plugin integriert werden könnten.

  • Weiters glaub ich (kenn mich mit JS ned aus), dass Du beim include in der Scriptdefinition einen Pfad drinnen hast, der so nicht passt. Schau mal, ob Du dir das ausgeben lassen kannst (echo??).

  • Vielen Dank
    Also wp_head() wp_footer() wp_meta() ist von anfang an drin gewesen.
    Das mit dem jQuery.noConflict(); hab ich auch gelesen, nur hab ich keine Ahnung wo ich das hin machen soll. Die Pfad Angaben im Script habe ich geändert in

    Code
    $.include('../wp-content/themes/sun/js/coin-slider.js');

    Wie ich das mit (echo) ausgeben kann weiß ich nicht, hab zwar gesucht, versteh aber nur bla bla. :confused:

Jetzt mitmachen!

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