Obtenga todos los campos avanzados de campos personalizados (ACF) dentro de Corcel fácilmente.
Este complemento de Corcel le permite obtener campos personalizados de WordPress creados por el complemento ACF utilizando la misma sintaxis de elocuente, del marco de Laravel. Puede usar modelos y colecciones elocuentes para mejorar su desarrollo, utilizando el backend de WordPress con cualquier aplicación PHP.
Para obtener más información sobre cómo funciona Corcel, visite el repositorio.
Corcel | Laravado | Php |
---|---|---|
^4.0 | 7.x | >=7.2 |
^5.0 | 8.x | >=7.3 |
Instalar el complemento ACF para Corcel es fácil:
composer require corcel/acf
Se requiere Corcel para este complemento, pero no se preocupe, si falta, también se instalará.
Esta es una versión de desarrollo para que el uso pueda cambiar más. El comportamiento deseado de este complemento es permitir esto:
$ post = Post :: find ( 1 );
echo $ post -> acf -> url ; // returns the url custom field created using ACF
Cuando se usa algo como $post->acf->url
el complemento debe hacer algunas consultas SQL adicionales para obtener el tipo de campo según el enfoque ACF. Así que creamos otra forma de obtener eso sin hacer esas consultas adicionales. Solo tiene informar el complemento cuál es el tipo de publicación, como función:
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
PD: Los nombres de métodos deben escribirse en formato
camelCase()
. Entonces, por ejemplo, para el tipo de campodate_picker
debe escribir$post->acf->datePicker('fieldName')
. El complemento hace la conversión decamelCase
asnake_case
para usted.
Usando el valor predeterminado $post->meta->field_name
en Corcel devuelve el valor de la columna meta_value
en la tabla wp_postmeta
. Puede ser una cadena, un entero o incluso una matriz serializada. El problema es que cuando está usando ACF, este valor puede ser más que eso. Si tiene un entero, por ejemplo, puede ser una post id
, una user id
o incluso una variedad de posts ids
.
ACF tiene que hacer 2 (dos) consultas SQL para encontrar el tipo de campo, por lo que según el tipo tiene un comportamiento diferente con el meta_value
. Por ejemplo, si el valor es 45
y el post type
es post_object
, el valor 45
es una publicación con ID 45
. Entonces, en este caso, Corcel debería devolver una instancia CorcelPost
en lugar de solo un entero.
Primero ACF obtiene el meta_value
en la tabla wp_postmeta
, donde el meta_key
es algo así como _field_name
y la ID de publicación es la ID de la publicación que desea el campo personalizado. El valor devuelto es la field key
y se parece a este field_57f421a2b81bd
. Con esta clave, obtiene la publicación correspondiente en wp_posts
, donde post_name = 'field_57f421a2b81bd'
. Con los resultados obtiene el valor post_content
, una matriz serializada, lo deserializa y obtiene el contenido en la tecla type
. Este es el tipo de campo. Según el ACF (y también este complemento) hace lo correcto.
Este complemento funciona con una lógica básica dentro de la clase de resumen de CorcelAcfFieldBasicField
, que tiene muchas funciones útiles para devolver la field key
, el value
, etc. El CorcelAcfFieldFactory
es responsable de devolver la instancia de campo correcta Según el tipo de campo, por lo tanto, si el tipo de campo es post_object
, devuelve una instancia de CorcelAcfFieldPostObject
, y devolverá en el método get()
una instancia de CorcelPost
.
Primero debemos crear las clases de campos y los casos de prueba. Después de que tengamos que configurar cómo Corcel va a funcionar con el complemento corcel/acf
, devolviendo el valor de campo personalizado en el formato $post->meta->field
o tal vez $post->acf->field
con un comportamiento diferente (¡hecho! ).
Repeater
;Flexible Content
con pruebas unitarias (¡hechas!);whereIn()
.Todavía faltan algunos campos (mesa de verificación a continuación y contribuye).
Campo | Estado | Revelador | Devolución |
---|---|---|---|
Texto | OK | @JGrossi | string |
Textea | OK | @JGrossi | string |
Número | OK | @JGrossi | number |
Correo electrónico | OK | @JGrossi | string |
Url | OK | @JGrossi | string |
Contraseña | OK | @JGrossi | string |
Wysiwyg (editor) | OK | @JGrossi | string |
injusto | OK | @JGrossi | string |
Imagen | OK | @JGrossi | CorcelAcfFieldImage |
Archivo | OK | @JGrossi | CorcelAcfFieldFile |
Galería | OK | @JGrossi | CorcelAcfFieldGallery |
Seleccionar | OK | @JGrossi | string o array |
Caja | OK | @JGrossi | string o array |
Radio | OK | @JGrossi | string |
Verdadero/falso | OK | @JGrossi | boolean |
Post objeto | OK | @JGrossi | CorcelPost |
Enlace de página | OK | @JGrossi | string |
Relación | OK | @JGrossi | CorcelPost O Collection DE Post |
Taxonomía | OK | @JGrossi | CorcelTerm o Collection de Term |
Usuario | OK | @JGrossi | CorcelUser |
Mapa de Google | desaparecido | ||
Seleccionador de fecha | OK | @JGrossi | CarbonCarbon |
Seleccionador de fecha | OK | @JGrossi | CarbonCarbon |
Seleccionador de tiempo | OK | @JGrossi | CarbonCarbon |
Seleccionador de color | OK | @JGrossi | string |
Reloj de repetición | OK | @JGrossi | Collection de campos |
Contenido flexible | OK | @Marcoboom | Collection |
Todas las contribuciones son bienvenidas. Antes de enviar su solicitud de extracción, eche un vistazo a las siguientes pautas:
develop
: git checkout -b my-fix-branch develop
;phpunit
para facilitar el trabajo de aprobación;corcel/acf:develop
, siempre . ¡No envíe las relaciones públicas a nuestra rama master
! Le recomendamos que use git flow
(https://github.com/petervanderdoes/gitflow-avh) flujo de trabajo para facilitar su vida. No es necesario, pero también será bueno para su carrera de desarrollo;PSR-2
(http://www.php-fig.org/psr/psr-2/). Para ejecutar las pruebas de PhPunit, ejecute phpunit
(si tiene un ejecutable de phpunit global) o pruebe el siguiente comando:
./vendor/bin/phpunit
Debe importar el archivo database.sql
a una base de datos dentro de su entorno local para que las pruebas funcionen. Simplemente descomprima el archivo tests/config/database.sql.zip
y configure los campos de la base de datos, el usuario y la contraseña en tests/config/bootstrap.php
.
Si desea acceder al panel de administración de WordPress, solo use el nombre de usuario como
admin
y contraseña123456
.
Licencia MIT © Junior Grossi