Stellen Sie JavaScript in das WordPress-Plug-in ein

Lesezeit: 2 Minuten

Benutzer-Avatar
aagjalpankaj

-Ich versuche, eine JavaScript-Datei in mein Plug-in einzufügen. Zum Testen rufe ich eine JavaScript-Funktion fun() auf.

-Meine Plug-in-Verzeichnisstruktur ist:

(erstes Plug-in, (js, ‘animate.js’), ‘erstes_Plugin.php’)

Das oben angegebene Verzeichnisformat ist wie folgt (dirname, content_in_the_dir_separated_by_comma).

-Hier ist mein Haupt-Plugin-Dateicode:

function wl_include_files() {
    wp_enqueue_script('wl_js', plugin_dir_path( __FILE__ ) . '/js/animate.js', array( 'jquery' ));
}

function wl_activate_plugin() {
    add_action('admin_enqueue_scripts', 'wl_include_files');
}

//
register_activation_hook(__FILE__, 'wl_activate_plugin');

function test() {
    $v = "<script>fun();</script>";
    echo $v;
}

//
add_action('admin_init', 'test');

-Hier ist mein JavaScript-Dateicode:

console.log('hi, file included properly.');

function fun() {
    alert("Hey, Someone calling me.");
}

– Ich erhalte folgenden Fehler in meiner Konsole:

ReferenceError: Spaß ist nicht definiert

-Kann jemand sagen, was das Problem ist?

Benutzer-Avatar
sequentiell

Das admin_init() Hook wird vor allen anderen Hooks ausgelöst, wenn ein Benutzer auf den Admin-Bereich zugreift. Das bedeutet, dass test() aufgerufen wird, bevor ein Teil der Seite erstellt wird. Oder anders gesagt, fun() Vorher würde noch der angerufen werden <html> tag und mehr auf den punkt, vorher animate.js ist darin enthalten <head>.

test.php (Haupt-Plugin-Datei im Test-Plugin-Verzeichnis)

//this wp_footer hook is called once the entire front-end page body has been constructed
add_action('wp_footer', 'test');

wp_enqueue_script( 'myjs', plugin_dir_url( __FILE__ ) . '/js.js');

function test()
{
    echo '<script>test();</script>';
}

js.js (im selben Testverzeichnis)

function test()
{
    console.log("Function called.");
}

(function ()
{
    console.log('JavaScript successfully included.');
})();

Weitere Links:

  • Hey, danke für das Interesse an meiner Frage. Ihre Lösung funktioniert. Was ist, wenn ich JavaScript/JQuery-Code im admin_init-Hook aufrufen möchte? Gibt es eine Möglichkeit, eine Javascript-Datei vor admin_init in mein Plugin einzufügen?

    – aagjalpankaj

    19. Oktober 2015 um 6:03 Uhr


  • @Aviator Was versuchst du eigentlich zu tun? Der Aufruf von JavaScript vor dem Start eines HTML-Dokuments (es gibt kein HTML-Dokument zum Zeitpunkt von admin_init) ist logisch nicht sinnvoll und würde wahrscheinlich zu unerwarteten Ergebnissen führen. admin_enqueue_scripts() würde JavaScript auf die gleiche Weise einbinden wp_enqueue_script() tut. Warum müssen Sie die enthaltenen Funktionen so früh aufrufen?

    – sequentiell

    19. Oktober 2015 um 15:43 Uhr


  • Ach, das stimmt. Macht Sinn. Vielen Dank! Ich muss ein zusätzliches Menü in der WordPress-Medienbibliothek hinzufügen. function test() { if (false != strpos($_SERVER['REQUEST_URI'], 'upload.php')) { media_library_menu(); } } add_action('admin_init', 'test'); media_library_menu() ruft die JavaScript-Funktion auf. Gehe ich falsch?

    – aagjalpankaj

    20. Oktober 2015 um 4:59 Uhr

1205920cookie-checkStellen Sie JavaScript in das WordPress-Plug-in ein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy