Ich arbeite an einem einfachen Suchformular-Widget mit integrierter Autovervollständigungsfunktion (Sie können die aktuelle Version hier herunterladen ). Das Plugin funktioniert, aber ich schreibe gerade den gesamten Code mit OOP neu. Eines der Probleme, auf die ich gestoßen bin, war die Tatsache, dass ein Wordpress-Widget bereits Teil der WP_Widget-Klasse ist. Ich kann den Code in 2 Klassen unterteilen. Der erste lädt alle Skripte und CSS und initialisiert das Widget. Hier ist der Umriss des Codes:
class wdSearchForm {
public function __construct() {
// Action hook to load widget
// Register and enqueue styles
// Register and enqueue scripts
}
// register widget in WordPress so that it is available under the widgets section
public function wd_searchform() {
register_widget( 'wd_searchform' );
}
}
Und hier ist der Überblick über die Widget-Klasse:
class wd_searchform extends WP_Widget {
// Constructor
function wd_searchform() {
}
// The widget itself
function widget( $args, $instance ) {
// The widget code
}
//Update the widget
function update( $new_instance, $old_instance ) {
// Update code
}
function form( $instance ) {
//Set up widget settings.
}
}
Ich möchte beide kombinieren, um wp_localize_script
das Skript mit den Widget-Optionen zu verwenden und zu laden. Wie soll ich das machen Vorschläge sind willkommen, auch wenn Sie mir sagen, dass ich völlig in die falsche Richtung gehe ...
quelle
Antworten:
Sie können Ihren Init-Code einfach in den Konstruktor der Klasse einfügen. Zum Beispiel:
Ich bevorzuge es, die Enqueue-Aufrufe tatsächlich in die Shortcode-Bearbeitungsfunktion zu integrieren, um den Overhead und mögliche Konflikte beim Laden von JavaScript und Stylesheets zu vermeiden, die auf einer bestimmten Seite nicht verwendet werden.
quelle
Ihr Code ist im PHP4-Stil. PHP4-Code sollte nicht mehr verwendet werden. Und nur einige Funktionen in ein Klassenkonstrukt einzufügen, ist kein OOP. Wenn Sie wiederverwendbaren Code schreiben möchten, trennen Sie Ihren Code.
Zum Beispiel:
Diese Klasse kann für jedes Widget wiederverwendet werden. Die Idee hinter OOP ist die Wiederverwendung Ihres Codes durch Schreiben von Datenkonstrukten mit zusätzlicher Funktion. Keine Klassenkonstrukte verwenden, weil jemand sagt, dass es ein guter Stil ist.
Die Klasse könnte folgendermaßen verwendet werden:
quelle