Reprochez tous les champs avancés des champs personnalisés (ACF) à l'intérieur à l'intérieur de Corcel facilement.
Ce plugin Corcel vous permet de récupérer les champs personnalisés WordPress créés par le plugin ACF en utilisant la même syntaxe d'éloquente, à partir du framework Laravel. Vous pouvez utiliser des modèles et des collections éloquents pour améliorer votre développement, en utilisant le backend WordPress avec n'importe quelle application PHP.
Pour plus d'informations sur le fonctionnement de Corcel, veuillez visiter le référentiel.
Corcel | Laravel | Php |
---|---|---|
^4.0 | 7.x | >=7.2 |
^5.0 | 8.x | >=7.3 |
Pour installer le plugin ACF pour Corcel est facile:
composer require corcel/acf
Corcel est requis pour ce plugin, mais ne vous inquiétez pas, s'il manque, il sera également installé.
Il s'agit d'une version de développement afin que l'utilisation puisse changer davantage. Le comportement souhaité de ce plugin est de permettre ceci:
$ post = Post :: find ( 1 );
echo $ post -> acf -> url ; // returns the url custom field created using ACF
Lorsque vous utilisez quelque chose comme $post->acf->url
le plugin doit faire des requêtes SQL supplémentaires pour obtenir le type de champ en fonction de l'approche ACF. Nous avons donc créé une autre façon d'obtenir cela sans faire ces requêtes supplémentaires. Vous n'avez que l'informer du plugin Quel est le type de message, en fonction:
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
PS: Les noms de méthode doivent être écrits au format
camelCase()
. Ainsi, par exemple, pour le type de champdate_picker
vous devez écrire$post->acf->datePicker('fieldName')
. Le plugin effectue la conversion decamelCase
ensnake_case
pour vous.
En utilisant la valeur par défaut $post->meta->field_name
dans Corcel renvoie la valeur de la colonne meta_value
dans la table wp_postmeta
. Il peut s'agir d'une chaîne, d'un entier ou même d'un tableau sérialisé. Le problème est que lorsque vous utilisez ACF, cette valeur peut être plus que cela. Si vous avez un entier, par exemple, il peut s'agir d'un post id
, d'un user id
ou même d'un tableau d' posts ids
.
ACF doit faire 2 (deux) requêtes SQL pour découvrir le type de champ, donc selon le type, il a un comportement différent avec le meta_value
. Par exemple, si la valeur est 45
et que le post type
est post_object
, la valeur 45
est un post avec ID 45
. Ainsi, dans ce cas, Corcel doit renvoyer une instance CorcelPost
au lieu d'un simple entier.
D'abord ACF récupère la meta_value
dans la table wp_postmeta
, où le meta_key
est quelque chose comme _field_name
et l'ID de message est l'ID du message que vous souhaitez le champ personnalisé. La valeur renvoyée est la field key
et il ressemble à ce field_57f421a2b81bd
. Avec cette clé, il récupère le post correspondant dans wp_posts
, où post_name = 'field_57f421a2b81bd'
. Avec les résultats, il obtient la valeur post_content
, un tableau sérialisé, le désérialise et obtient le contenu sur la clé type
. Ceci est le type de champ. Selon cela, l'ACF (et aussi ce plugin) fait la bonne chose.
Ce plugin fonctionne avec une logique de base à l'intérieur de la classe Résumé CorcelAcfFieldBasicField
, qui a beaucoup de fonctions utiles pour renvoyer la field key
, la value
, etc. Le CorcelAcfFieldFactory
est responsable de renvoyer l'instance de champ correcte Selon le type de champ, donc, si le type de champ est post_object
il renvoie une instance de CorcelAcfFieldPostObject
, et il renverra dans la méthode get()
une instance de CorcelPost
.
Nous devons d'abord créer les classes de champs et les cas de test. Une fois que nous devons configurer comment Corcel va fonctionner avec le plugin corcel/acf
, renvoyant la valeur de champ personnalisée au format $post->meta->field
ou peut-être $post->acf->field
ayant un comportement différent (fait! ).
Repeater
;Flexible Content
avec des tests unitaires (fait!);whereIn()
.Certains champs sont toujours manquants (vérifiez le tableau ci-dessous et contribuez).
Champ | Statut | Promoteur | Rendements |
---|---|---|---|
Texte | d'accord | @jgrossi | string |
Textarea | d'accord | @jgrossi | string |
Nombre | d'accord | @jgrossi | number |
d'accord | @jgrossi | string | |
URL | d'accord | @jgrossi | string |
Mot de passe | d'accord | @jgrossi | string |
Wysiwyg (éditeur) | d'accord | @jgrossi | string |
bizarre | d'accord | @jgrossi | string |
Image | d'accord | @jgrossi | CorcelAcfFieldImage |
Déposer | d'accord | @jgrossi | CorcelAcfFieldFile |
Galerie | d'accord | @jgrossi | CorcelAcfFieldGallery |
Sélectionner | d'accord | @jgrossi | string ou array |
Cocher | d'accord | @jgrossi | string ou array |
Radio | d'accord | @jgrossi | string |
Vrai / faux | d'accord | @jgrossi | boolean |
Post objet | d'accord | @jgrossi | CorcelPost |
Lien de page | d'accord | @jgrossi | string |
Relation | d'accord | @jgrossi | CorcelPost ou Collection de Post |
Taxonomie | d'accord | @jgrossi | CorcelTerm ou Collection de Term |
Utilisateur | d'accord | @jgrossi | CorcelUser |
Google map | manquant | ||
Cueilleur de date | d'accord | @jgrossi | CarbonCarbon |
Cueilleur de date | d'accord | @jgrossi | CarbonCarbon |
Cueilleur de temps | d'accord | @jgrossi | CarbonCarbon |
Cueilleur de couleurs | d'accord | @jgrossi | string |
Répétiteur | d'accord | @jgrossi | Collection de champs |
Contenu flexible | d'accord | @MarCoboom | Collection |
Toutes les contributions sont les bienvenues. Avant de soumettre votre demande de traction, jetez un coup d'œil aux directives suivantes:
develop
: git checkout -b my-fix-branch develop
;phpunit
pour faciliter le travail d'approbation;corcel/acf:develop
, toujours . N'envoyez pas PR à notre branche master
! Nous vous encourageons à utiliser le flux de travail git flow
(https://github.com/petervanderdoes/gitflow-avh) pour vous faciliter la vie. Ce n'est pas nécessaire, mais ce sera également bon pour votre carrière de développement;PSR-2
(http://www.php-fig.org/psr/psr-2/). Pour exécuter les tests PHPUnit, exécutez phpunit
(si vous avez un exécutable global PHPUnit) ou essayez la commande suivante:
./vendor/bin/phpunit
Vous devez importer le fichier database.sql
dans une base de données dans votre environnement local pour faire fonctionner les tests. Décompressez simplement le fichier tests/config/database.sql.zip
et définissez la base de données, les champs d'utilisateur et de mot de passe dans tests/config/bootstrap.php
.
Si vous souhaitez accéder au panneau d'administration WordPress, utilisez le nom d'utilisateur en tant
admin
et mot de passe123456
.
Licence MIT © Junior Grossi