Mit Komponist installieren:
composer require felipelavinz/queulat:dev-master
Der Komponist installiert auf wp-content/mu-plugins/queulat
Wenn Sie in einem anderen Ordner installieren müssen, sollten Sie dem Composer.json Ihres Projekts so etwas hinzufügen:
{
"extra" : {
"installer-paths" : {
"htdocs/wp-content/mu-plugins/{$name}" : [ " type:wordpress-muplugin " ]
}
}
} Wobei htdocs/wp-content/mu-plugins/{$name} der Weg zu Ihrem MU-Plugins-Verzeichnis ist. Queulat wird als Unterordner im angegebenen Ordner installiert.
Queulat verwendet den Komponisten-Autoloader, um den größten Teil seines Codes zu entspannen. Sie müssen daher sicherstellen, dass der Autoloader vor dem Initialisieren von Queulat enthalten ist.
Da in einem Unterordner installierte MU-Plugins nicht automatisch von WordPress geladen werden, müssen Sie die Hauptdatei manuell benötigen.
Sie können dies mit einer einzelnen Datei im Ordner mu-Plugins lösen, wie z. B.:
<?php
/**
* Plugin Name: Queulat Loader
* Description: Load Queulat mu-plugin
*/
// Load Composer autoloader (ABSPATH it's the path to wp-load.php).
require_once ABSPATH . ' /../vendor/autoload.php ' ;
// Load Queulat main file.
require_once __DIR__ . ' /queulat/queulat.php ' ;Plugin -Header sind optional, aber empfohlen.
Sie können auch so etwas wie den Autoloader von Bedrock verwenden, mit dem alle auf den Unterordnern installierten MU-Plugins geladen werden (Sie können diese Datei einfach in Ihrem MU-Plugin-Ordner kopieren und das Queuat automatisch lädt).
Queulat soll die Art und Weise verbessern, wie wir Dinge für WordPress erstellen . Anstatt es grundlegend zu verwandeln, versucht es, vertraute Konzepte zu verwenden, um besser strukturierte Dinge dafür zu erstellen, indem benutzerdefinierte Post-Typen , benutzerdefinierte Postfragen und benutzerdefinierte Postobjekte verwendet werden.
Sie können diese über einen eigenen benutzerdefinierten Post -Typ -Plugin -Generator generieren, der den Administratorbenutzern im Menü "Tools" zur Verfügung steht.
Jedes benutzerdefinierte Post -Typ -Plugin, aus dem es besteht:
Song_Post_Type . Diese Klasse definiert die Etiketten und andere Argumente für die Registrierung des Postyps auf WordPress. Standardmäßig wird die Plugin -Aktivierung die erforderlichen Permisionen für Administratoren und Spülen -Umschreibungen hinzufügen. Sie können diese Klasse erweitern, wenn Sie benutzerdefinierte Hooks für zusätzliche Funktionen für den Post -Typ definieren müssen.Song_Post_Query . Sie können diese Klasse verwenden, um neue Datenbankabfragen zu erstellen, wobei Sie alle Standardparameter verwenden, die Sie möglicherweise für diese Art von Inhalten definieren möchten, und über die Ergebnisse mit einem einfachen foreach anstelle der klassischen WordPress -Schleife iterieren.Song_Post_Object , die bei Verwendung der benutzerdefinierten Abfrage in der foreach -Schleife zurückgegeben wird. Auf diese Weise können Sie dieser Klasse benutzerdefinierte Methoden hinzufügen, die auf der foreach -Schleife verfügbar sein werden.Mit Queulat könnten Sie so etwas tun wie:
$ tracklist = new Song_Post_Query ( array (
' tax_query ' => array (
array (
' taxonomy ' => ' albums ' ,
' term ' => ' dark-side-of-the-moon ' ,
' field ' => ' slug '
)
)
) );
foreach ( $ tracklist as $ track ) {
echo $ track -> title ();
echo $ track -> duration ();
echo $ track -> lyrics ();
} @todo
@todo
@todo
Derzeit ist die primäre Möglichkeit, Meta -Daten zu Postobjekten zu definieren, die Meta -Boxen erstellen. Erweiterung der mitgelieferten QueulatMetabox Abstract -Klasse.
Die Erweiterungsklasse muss die abstrakten Methoden implementieren: get_fields( ) : array und sanitize_data( array $data ) : array ; zum Beispiel:
<?php
use Queulat Metabox ;
use Queulat Forms Node_Factory ;
use Queulat Forms Element Input_Text ;
class Track_Meta_Box extends Metabox {
/**
* Must return the list of form fields to be included on this meta box
*
* @return QueulatFormsNode_Interface[] Array of form fields.
**/
public function get_fields () : array {
return array (
Node_Factory:: make (
Input_Text::class,
array (
' name ' => ' length ' ,
' label ' => ' Track length ' ,
' attributes.class ' => ' regular-text ' ,
' properties.description ' => _x ( ' Track duration, such as: 01:23:45 (1 hour, 23 minutes, 45 seconds) ' , ' length field description ' , ' track_cpt ' ),
)
),
Node_Factory:: class (
Input_Checkbox::class,
array (
' name ' => ' colour ' ,
' label ' => ' Colour ' ,
' options ' => array (
' red ' => ' Red ' ,
' green ' => ' Green ' ,
' blue ' => ' Blue ' ,
' any ' => ' Any colour '
)
)
)
);
}
/**
* Sanitize data from the metabox form.
*
* @param array $data Form data from the meta box (not the full $_POST).
* @return array Sanitized data.
**/
public function sanitize_data ( array $ data ) : array {
return queulat_sanitizer ( $ data , array (
' length ' => array ( ' sanitize_text ' ),
' colour.* ' => array ( ' sanitize_key ' )
) );
}
}Queulat kümmert sich um die Aktualisierung der übermittelten Daten als Post -META -Felder und lädt die gespeicherten Werte im Meta -Box -Formular.
Für die Bereinigung von Daten können Sie jede Methode verwenden, die Sie bevorzugen. Die referenzierte Funktion queulat_sanitizer() Es ist eine ziemlich einfache Möglichkeit, Rückrufe auf die übereinstimmenden Werte aus der $data -Eingabe anzuwenden. Sie können * mit allen Eigenschaften übereinstimmen (unter Verwendung von Punktnotation).
Überprüfen Sie den Abschnitt auf (Verwenden von Queulat-Formularen) [#Verwendung-Queulat-Formen] für weitere Informationen zu verfügbaren Formularfeldern oder zum Erstellen Ihrer eigenen.
@todo: add general description
@todo: add description for each form field
@todo
@todo
Node_Factory Es ist eine einfache Fabrikklasse, die in der Lage ist, jede Art von Formelementelement zu erstellen.
Es enthält eine einzelne make -Methode, die ein Element instanziieren und konfigurieren kann. Diese Methode erfordert zwei Parameter:
Standardmäßig ist Queulat so konfiguriert, dass die folgenden Attribute verarbeitet werden:
Node_Factory als Array erstellt werden können.Argumente, die vom Element nicht unterstützt werden, werden übersprungen.
Sie können die unterstützten Argumente mit Node_Factory::register_argument() erweitern.
<?php
use Queulat Forms Element Div ;
use Queulat Forms Node_Factory ;
use Queulat Forms Element Button ;
$ submit = Node_Factory:: make (
Div::class, array (
' attributes ' => array (
' class ' => ' col-md-4 col-md-offset-8 ' ,
' id ' => ' form-buttons '
),
' text_content ' => ' * required field ' ,
' children ' => array (
Node_Factory:: make (
Button::class,
' attributes ' => array (
' class ' => ' btn-lg ' ,
' type ' => ' submit '
),
' text_content ' => ' Submit '
)
)
);
);
echo $ submit ; Sie können neue Argumente registrieren, die vom NODE_FACTORY mit der register_argument -Methode verwendet werden.
Diese Methode enthält eine Node_Factory_Argument_Handler , die erforderlich ist:
$argument (Zeichenfolge), das der Name des Argumentschlüssels ist, den Sie verarbeiten werden.$method (Zeichenfolge), die der Name der Methode ist, die die auf der Fabrikmethode verwendeten Parameter empfängt.$call_type (String), das feststellt, wie die $ -Methode die empfangenen Konfigurationswerte behandelt. Der $call_type kann einer von: sein:
Node_Factory::CALL_TYPE_VALUE : Übergeben Sie alle Argumente als einzelnes Array an den Handler. Dies ist die Standardeinstellung. Beispiel: $obj->$method( $args );
Node_Factory::CALL_ARRAY : Übergeben Sie Argumente als individuelle Parameter an den Handler. Beispiel: call_user_func_array( [ $obj, $method ], $args );
Node_Factory::CALL_KEY_VALUE : Übergeben Sie für jedes Element im Argument seinen Schlüssel und den Wert als Parameter an den Handler. Beispiel:
foreach ( $ args as $ key => $ val ) {
$ obj -> $ method ( $ key , $ val );
} Node_Factory::CALL_TYPE_VALUE_ITEMS : Verwenden Sie für jedes Element im Argument den Wert als Parameter für den Handler. Beispiel: array_walk( $args, [ $obj, $method ] );
| Verwandte Schnittstellen | Verwandte Merkmale |
|---|---|
Component_Interface | Node_Trait |
Element_Interface | Childless_Node_Trait |
Knoten sind die niedrigste Ebene von Objekten, die mit Formularen verwendet werden sollten
Verwenden Sie Node_Trait , um diese Schnittstelle zu implementieren, oder Childless_Node_Trait . Im Allgemeinen sollten Elemente die ersteren und die Komponenten der letzteren verwenden.
Erweitert das node_interface und die Attribute_interface.
Erweitert das node_interface und die Attribute_interface. Fügt auch die Methode get_tag_name hinzu.
Erweitert das Element_interface und die Eigenschaften_Interface.
Erweitert html_element_interface und form_node_interface.
"Attribute" sind spezielle Eigenschaften, die von Objekten verwendet werden, die diese Schnittstelle implementieren. Sie werden als HTML -Attribute key="val" gerendert.
Verwenden Sie Attributes_Trait , um diese Schnittstelle zu implementieren.
Objekte, die diese Schnittstelle implementieren (Elemente oder Komponenten), werden als Formularobjekte verwendet. Sie haben einen "Namen", mit dem Daten an den Server, einen "Wert" und ein "Etikett" gesendet werden.
Die Form_Control_Trait hilft bei der Implementierung der "Etiketten" und "Namen" Getter und Setter von dieser Schnittstelle. Der "Wert" Getter und Setter sollten von Ihrer eigenen benutzerdefinierten Komponente definiert werden.
Erweitert ArrayAccess, Suchableer, zählbar, serialisierbar.
Am häufigsten verwendet, um einen Array-ähnlichen Kindersatz aus einem Knoten zu erhalten.
Wird von Steuerelementen wie Kontrollkästchen, Funkgeräten, Auswahl und jeder Komponente verwendet, in der der Benutzer mehrere Alternativen präsentiert, aus denen er auswählen kann.
Verwenden Sie Options_Trait , um diese Schnittstelle zu implementieren.
Knoteneigenschaften (nicht mit regelmäßigen Objekteigenschaften verwechselt werden) können beliebige Daten speichern, z. B. Ansichtseinstellungen, Fehlerdaten oder Validierungszustand.
Verwenden Sie Properties_Trait , um diese Schnittstelle zu implementieren.
Basisschnittstelle, die mit Formularansichten verwendet werden soll.