Es ist ein trauriger Tag auf der Welt, an dem ich etwas google und es nichts zurückgibt. Ich versuche, den Standard-Datepicker (oder JEDEN Datepicker zu diesem Zeitpunkt) zu verwenden, und kann dies aufgrund meiner mangelnden Kenntnisse in Wordpress / PHP nicht. In meinem Plugin versuche ich, jquery und die Benutzeroberfläche zu registrieren und beschädige anscheinend dabei andere Teile von WordPress. Kann mir bitte jemand sagen, was ich falsch mache und wenn er eine funktionierende Lösung bieten kann, werde ich meinen gesamten Code verschrotten:
add_action('init', 'add_styles');
function add_styles(){
wp_deregister_style('simpleschoolstyles');
wp_register_style('simpleschoolstyles', SSM_STYLEFILE);
wp_deregister_script( 'jquery' );
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js');
wp_deregister_script( 'jquery-ui' );
wp_register_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
wp_deregister_style( 'jquery-ui' );
wp_register_style( 'jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/pepper-grinder/jquery-ui.min.css' );
wp_deregister_script('maskedinput');
wp_register_script('maskedinput', SSM_PLUGIN_URL . '/includes/js/jquery.maskedinput.min.js');
wp_deregister_script('simpleschool');
wp_register_script('simpleschool', SSM_PLUGIN_URL . '/includes/js/simpleschool.js');
}
add_action('wp_enqueue_scripts', 'load_scripts');
add_action('admin_enqueue_scripts', 'load_scripts');
function load_scripts()
{
wp_enqueue_style('jquery-ui');
wp_enqueue_style('simpleschoolstyles');
wp_enqueue_script('jquery');
wp_enqueue_script('jquery-ui');
wp_enqueue_script('maskedinput');
wp_enqueue_script('simpleschool');
}
Ich benötige jQuery, um im Admin-Bereich sowie im Front-End für die Eingabe von Benutzerdaten verfügbar zu sein. Bitte jemand helfen. Ich bin kurz davor, meine Zehennägel abzuziehen, da ich bereits alle Haare herausgerissen habe ... Ich gehe davon aus, dass ich mich zum falschen Zeitpunkt in die Warteschlange stellen muss, aber aufgrund meiner begrenzten Kenntnisse in WordPress habe ich mich selbst ausgegraben schnell ein Grab.
UPDATE: Ich habe mein Skript geändert und lade jetzt nur die jQuery-Benutzeroberfläche und habe getestet, dass jQuery und die Benutzeroberfläche beide geladen sind und für diese beiden erfolgreich sind, jedoch kein vorhandenes Objekt im DOM:
add_action('init', 'init_scripts');
function init_scripts(){
wp_deregister_style('simpleschoolstyles');
wp_register_style('simpleschoolstyles', SSM_STYLEFILE);
//wp_deregister_script( 'jquery-ui' );
wp_register_script('jquery-ui', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js');
//wp_deregister_style( 'jquery-ui' );
wp_register_style( 'jquery-ui-pepper-grinder', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/pepper-grinder/jquery-ui.min.css' );
//wp_deregister_script('maskedinput');
wp_register_script('maskedinput', SSM_PLUGIN_URL . '/includes/js/jquery.maskedinput.min.js');
//wp_deregister_script('simpleschool');
wp_register_script('simpleschool', SSM_PLUGIN_URL . '/includes/js/simpleschool.js');
wp_enqueue_style('jquery-ui-pepper-grinder');
wp_enqueue_style('simpleschoolstles');
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-ui' );
wp_enqueue_script('simpleschool');
}
Mein Test:
jQuery(document).ready(function(){
//jQuery('.datepick').mask("99/99/9999");
//jQuery('.phone').mask("(999) 999-9999");
jQuery( '.datepick' ).datepicker( 'option', 'dateFormat', 'yyyy-mm-dd' ); // <-- this fails ????
alert('jQuery BETTER BE LOADED!!!'); // <---this worked
jQuery('<div>crazy wordpress and their php</div>').dialog(); // <--- this worked too
});
quelle
ajax.googleapis.com
.Antworten:
Da alle Bibliotheken, die Sie für den Datepicker benötigen, in WordPress gebündelt und mit allen entsprechenden Abhängigkeiten registriert sind, müssen Sie nur Folgendes tun:
Wenn Sie sich dann die Quelle der Seite ansehen, werden Sie sehen, dass jQuery, jQuery-UI und jQuery-UI-Datepicker alle geladen sind.
Natürlich müssen Sie alle anderen Skripte selbst so laden, wie Sie es bereits sind, obwohl Sie sie mit ihren Abhängigkeiten registrieren sollten - dritter Parameter.
Zum Beispiel...
Auf diese Weise können Sie das mit ...
... und wissen, dass die Abhängigkeiten - jQuery - ebenfalls geladen werden.
quelle
wp_enqueue_scripts
- wird überall im Frontend geladen, ohne die Anmeldeseite zu zählen. Sie möchten die Skripte jedoch wirklich nur auf die bestimmten Seiten laden, die sie benötigen, damit Sie diesen Rückruf so ändern können, dass er seitenspezifischer ist. Für die Backend-Verwendungadmin_enqueue_scripts
möchten Sie sie aber wirklich nur dort laden, wo sie benötigt werden. Es gibt mehrere seitenspezifische Hooks im Backend. Ich kann nicht sagen, was Sie brauchen, ohne zu wissen, wo Sie die Skripte brauchen.Um die hervorragende Antwort von @ s_ha_dum zu ergänzen , finden Sie hier ein Beispiel, das zeigt, wie Sie die integrierte Datumsauswahl für die jQuery-Benutzeroberfläche auf Ihrer Plugin-Seite verwenden.
Das Ergebnis sieht folgendermaßen aus:
Auf GitHub herunterladen .
Die wichtigsten Teile:
datepicker({ dateFormat: "yy-mm-dd" })
, dass Sie festlegen , damit Sie wissen, was Sie von Ihrem Rückruf-Handler erwarten.Ich habe zuerst eine Basisklasse erstellt, um etwas zu haben, das ich auch in anderen Antworten verwenden kann, und um den tatsächlichen Code für das Datumsauswahlskript spezifisch und einfach zu halten.
Basisklasse
Wpse_Plugin_Options_Page
Jetzt müssen wir nur noch die wichtigsten Teile neu definieren. Schön kurz.
Spezielle Klasse
Wpse_Datepicker_Example
Es gibt noch viel Raum für Verbesserungen, aber zunächst sollte es nützlich sein.
quelle
Es gibt verschiedene Möglichkeiten, jQuery in ein Thema aufzunehmen. Ich verwende immer die WP-Bundle-Version, die ich sehr einfach finde. Um die Dinge richtig einzurichten, müssen wir sicherstellen, dass die WP-Seite die folgenden Dateien enthält, die beim Laden der Seite berücksichtigt werden sollen. Fügen Sie zum Laden von Balgskript und -stil einen Balgcode in die Datei theme functions.php ein.
Skript für den Front-End-Gebrauch
Skript für die Back-End-Verwendung
Wir können eine Funktion schreiben, die für bestimmte Seiten wie single.php, page oder plugin page verknüpft werden soll. Ich habe 'options-general.php' hinzugefügt oder angeschlossen, um sie unter Einstellungen> Datumsauswahl anzuzeigen . Fügen Sie einfach diesen Code auch in die Datei funtions.php ein oder folgen Sie diesem Code.
Nachdem Sie diesen Code hinzugefügt haben, erhalten Sie eine Datumsauswahl unter Admin-Menü-> Einstellungen-> Datumsauswahl . Wenn Sie Hilfe benötigen, um diese Option zu erhalten, fragen Sie nach einer Abfrage, indem Sie Kommentare zu Add a jQuery DatePicker to WordPress Theme oder Plugin hinzufügen .
quelle