Feln Sie alle fortschrittlichen benutzerdefinierten Felder (ACF) in Corcel leicht.
Mit diesem Corcel -Plugin können Sie die vom ACF -Plugin erstellten WordPress -Felder mit derselben Syntax von eloquent aus dem Laravel -Framework abrufen. Sie können eloquente Modelle und Sammlungen verwenden, um Ihre Entwicklung zu verbessern, indem Sie das WordPress -Backend mit jeder PHP -Anwendung verwenden.
Weitere Informationen zur Funktionsweise von Corcel finden Sie im Repository.
Corcel | Laravel | Php |
---|---|---|
^4.0 | 7.x | >=7.2 |
^5.0 | 8.x | >=7.3 |
Um das ACF -Plugin für Corcel zu installieren, ist es einfach:
composer require corcel/acf
Für dieses Plugin ist Corcel erforderlich, aber keine Sorge, wenn es fehlt, wird es ebenfalls installiert.
Dies ist eine Entwicklungsversion, sodass sich die Verwendung weiter ändern kann. Das gewünschte Verhalten dieses Plugins besteht darin, dies zuzulassen:
$ post = Post :: find ( 1 );
echo $ post -> acf -> url ; // returns the url custom field created using ACF
Wenn Sie so etwas wie $post->acf->url
verwenden, muss das Plugin zusätzliche SQL-Abfragen vornehmen, um den Feldtyp gemäß dem ACF-Ansatz zu erhalten. Wir haben also einen anderen Weg geschaffen, um das zu bekommen, ohne diese zusätzlichen Fragen zu machen. Sie haben nur das Plugin, was der Post -Typ ist, als Funktion:
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
PS: Die Methodennamen sollten im Format
camelCase()
geschrieben werden. So sollten Sie beispielsweise für den Feldtypdate_picker
$post->acf->datePicker('fieldName')
schreiben. Das Plugin führt die Konvertierung voncamelCase
insnake_case
für Sie durch.
Verwenden des Standards $post->meta->field_name
in corcel gibt den Wert der meta_value
Spalte in der Tabelle wp_postmeta
zurück. Es kann eine Zeichenfolge, eine Ganzzahl oder sogar ein serialisiertes Array sein. Das Problem ist, wenn Sie ACF verwenden, kann dieser Wert mehr als das sein. Wenn Sie beispielsweise eine Ganzzahl haben, kann es sich um eine post id
, eine user id
oder sogar eine Reihe von posts ids
handeln.
ACF muss 2 (zwei) SQL -Abfragen vornehmen, um den Feldtyp herauszufinden. Daher hat es je nach Typ ein anderes Verhalten mit dem meta_value
. Wenn der Wert beispielsweise 45
beträgt und der post type
post_object
ist, ist der Wert 45
ein Beitrag mit ID 45
. In diesem Fall sollte Corcel also eine CorcelPost
-Instanz anstelle einer Ganzzahl zurückgeben.
Das erste ACF bittet den meta_value
in wp_postmeta
-Tabelle, wobei der meta_key
so etwas wie _field_name
ist und die Post -ID die ID des Beitrags ist, das das benutzerdefinierte Feld wünscht. Der zurückgegebene Wert ist der field key
und es sieht so aus, als würde dieses field_57f421a2b81bd
. Mit diesem Schlüssel holt er den entsprechenden Beitrag in wp_posts
, wobei post_name = 'field_57f421a2b81bd'
. Mit den Ergebnissen erhält es den Wert post_content
, ein serialisiertes Array, es deserialisiert es und erhält den Inhalt für den type
. Dies ist der Feldtyp. Nach IT tut das ACF (und auch dieses Plugin) das Richtige.
field key
Plugin value
mit einer grundlegenden Logik in Corcel CorcelAcfFieldFactory
CorcelAcfFieldBasicField
abstrakt Nach dem Feldtyp, wenn der Feldtyp post_object
ist, gibt es eine Instanz von CorcelAcfFieldPostObject
zurück, und es wird in der get()
-Methode eine Instanz von CorcelPost
zurückgegeben.
Zuerst sollten wir die Fields -Klassen und die Testfälle erstellen. Nachdem wir eingerichtet haben müssen, wie Corcel mit dem corcel/acf
Plugin arbeitet und den benutzerdefinierten Feldwert im Feld $post->meta->field
oder möglicherweise $post->acf->field
mit unterschiedlichem Verhalten (fertig! ).
Repeater
Field.Flexible Content
mit Unit -Tests (erledigt!);whereIn()
-Klauseln zu verbessern.Einige Felder fehlen noch (prüfen Sie die Tabelle unten und tragen Sie dazu bei).
Feld | Status | Entwickler | Zurück |
---|---|---|---|
Text | OK | @JGrossi | string |
Textbereich | OK | @JGrossi | string |
Nummer | OK | @JGrossi | number |
OK | @JGrossi | string | |
URL | OK | @JGrossi | string |
Passwort | OK | @JGrossi | string |
Wysiwyg (Herausgeber) | OK | @JGrossi | string |
Oembed | OK | @JGrossi | string |
Bild | OK | @JGrossi | CorcelAcfFieldImage |
Datei | OK | @JGrossi | CorcelAcfFieldFile |
Galerie | OK | @JGrossi | CorcelAcfFieldGallery |
Wählen | OK | @JGrossi | string oder array |
Kontrollkästchen | OK | @JGrossi | string oder array |
Radio | OK | @JGrossi | string |
Wahr/falsch | OK | @JGrossi | boolean |
Postobjekt | OK | @JGrossi | CorcelPost |
Seitenlink | OK | @JGrossi | string |
Beziehung | OK | @JGrossi | CorcelPost oder Collection von Post |
Taxonomie | OK | @JGrossi | CorcelTerm oder Collection von Term |
Benutzer | OK | @JGrossi | CorcelUser |
Google Map | fehlen | ||
Date Picker | OK | @JGrossi | CarbonCarbon |
Datum Zeit Picker | OK | @JGrossi | CarbonCarbon |
Zeitpicker | OK | @JGrossi | CarbonCarbon |
Farbwählerin | OK | @JGrossi | string |
Repeater | OK | @JGrossi | Collection von Feldern |
Flexibler Inhalt | OK | @marcoboom | Collection |
Alle Beiträge sind willkommen. Bevor Sie Ihre Pull -Anfrage einreichen, sehen Sie sich die folgenden Richtlinien an:
develop
: git checkout -b my-fix-branch develop
;phpunit
ein, um den Genehmigungsauftrag zu erleichtern.corcel/acf:develop
immer . Senden Sie PR nicht an unsere master
-Niederlassung! Wir empfehlen Ihnen, den Workflow git flow
(https://github.com/petervanderdoes/gitflow-avh) zu verwenden, um Ihr Leben zu erleichtern. Es ist nicht notwendig, aber es wird auch gut für Ihre Entwicklungskarriere sein;PSR-2
Konventionen folgt (http://www.php-fig.org/psr/psr-2/). Um die Phpunit -Tests auszuführen, führen Sie phpunit
aus (wenn Sie eine globale Phpunit -Datei haben) oder versuchen Sie den folgenden Befehl:
./vendor/bin/phpunit
Sie sollten die Datei database.sql
in eine Datenbank in Ihrer lokalen Umgebung importieren, um die Tests zum Laufen zu bringen. Entpacken Sie einfach die tests/config/database.sql.zip
-Datei und setzen Sie die Felder Datenbank-, Benutzer- und Kennwort in tests/config/bootstrap.php
.
Wenn Sie auf das WordPress -Administratorbereich zugreifen möchten, verwenden Sie den Benutzernamen einfach als
admin
und Passwort123456
.
MIT -Lizenz © Junior Grossi