Pegue todos os campos avançados de campos personalizados (ACF) dentro de Corcel facilmente.
Este plug -in do Corcel permite buscar campos personalizados do WordPress criados pelo plug -in ACF usando a mesma sintaxe de eloqüente, a partir da estrutura do Laravel. Você pode usar modelos e coleções eloquentes para melhorar seu desenvolvimento, usando o back -end do WordPress com qualquer aplicativo PHP.
Para mais informações sobre como o Corcel funciona, visite o repositório.
Corcel | Laravel | Php |
---|---|---|
^4.0 | 7.x | >=7.2 |
^5.0 | 8.x | >=7.3 |
Para instalar o plugin ACF para Corcel é fácil:
composer require corcel/acf
O Corcel é necessário para este plug -in, mas não se preocupe, se estiver faltando, ele também será instalado.
Esta é uma versão de desenvolvimento para que o uso possa mudar ainda mais. O comportamento desejado deste plugin é permitir isso:
$ post = Post :: find ( 1 );
echo $ post -> acf -> url ; // returns the url custom field created using ACF
Ao usar algo como $post->acf->url
o plug-in precisa fazer algumas consultas SQL extras para obter o tipo de campo de acordo com a abordagem do ACF. Então, criamos outra maneira de conseguir isso sem fazer essas consultas extras. Você tem apenas o informar o plug -in qual é o tipo de postagem, como uma função:
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
PS: Os nomes dos métodos devem ser gravados no formato
camelCase()
. Assim, por exemplo, para o tipo de campodate_picker
você deve escrever$post->acf->datePicker('fieldName')
. O plug -in faz a conversão decamelCase
parasnake_case
para você.
Usando o padrão $post->meta->field_name
em corcel retorna o valor da coluna meta_value
na tabela wp_postmeta
. Pode ser uma corda, um número inteiro ou mesmo uma matriz serializada. O problema é que, quando você está usando o ACF, esse valor pode ser mais do que isso. Se você tem um número inteiro, por exemplo, ele pode ser um post id
, um user id
ou até uma matriz de posts ids
.
O ACF precisa fazer 2 (duas) consultas SQL para descobrir o tipo de campo; portanto, de acordo com o tipo, ele tem um comportamento diferente com o meta_value
. Por exemplo, se o valor for 45
e o post type
for post_object
, o valor 45
será uma postagem com ID 45
. Portanto, neste caso, o Corcel deve devolver uma instância CorcelPost
em vez de apenas um número inteiro.
O primeiro ACF busca o meta_value
na tabela wp_postmeta
, onde o meta_key
é algo como _field_name
e o ID da postagem é o ID da postagem que você deseja o campo personalizado. O valor retornado é a field key
e parece este field_57f421a2b81bd
. Com esta chave, ele busca a postagem correspondente em wp_posts
, onde post_name = 'field_57f421a2b81bd'
. Com os resultados, ele obtém o valor post_content
, uma matriz serializada, a desestimiza e obtém o conteúdo na tecla type
. Este é o tipo de campo. De acordo com o ACF (e também este plugin) faz a coisa certa.
Este plug -in funciona com uma lógica básica dentro da classe CorcelAcfFieldBasicField
Abstract, que tem muitas funções úteis para retornar a field key
, o value
, etc. O CorcelAcfFieldFactory
é responsável por retornar a instância de campo correta De acordo com o tipo de campo, se o tipo de campo for post_object
, retorne uma instância de CorcelAcfFieldPostObject
, e ele retornará no método get()
uma instância de CorcelPost
.
Primeiro, devemos criar as classes dos campos e os casos de teste. Depois de ter que configurar como o Corcel vai funcionar com o plugin corcel/acf
, retornando o valor do campo personalizado no formato $post->meta->field
ou talvez $post->acf->field
com comportamento diferente (feito! ).
Repeater
;Flexible Content
com testes de unidade (feito!);whereIn()
.Alguns campos ainda estão faltando (verifique a tabela abaixo e contribua).
Campo | Status | Desenvolvedor | Retorna |
---|---|---|---|
Texto | OK | @jgrossi | string |
Textarea | OK | @jgrossi | string |
Número | OK | @jgrossi | number |
OK | @jgrossi | string | |
Url | OK | @jgrossi | string |
Senha | OK | @jgrossi | string |
Wysiwyg (editor) | OK | @jgrossi | string |
OFEBBED | OK | @jgrossi | string |
Imagem | OK | @jgrossi | CorcelAcfFieldImage |
Arquivo | OK | @jgrossi | CorcelAcfFieldFile |
Galeria | OK | @jgrossi | CorcelAcfFieldGallery |
Selecione | OK | @jgrossi | string ou array |
Caixa de seleção | OK | @jgrossi | string ou array |
Rádio | OK | @jgrossi | string |
Verdadeiro/falso | OK | @jgrossi | boolean |
Postar objeto | OK | @jgrossi | CorcelPost |
Link da página | OK | @jgrossi | string |
Relação | OK | @jgrossi | CorcelPost ou Collection de Post |
Taxonomia | OK | @jgrossi | CorcelTerm ou Collection de Term |
Usuário | OK | @jgrossi | CorcelUser |
Mapa do Google | ausente | ||
Picker de data | OK | @jgrossi | CarbonCarbon |
Data Hora Picker | OK | @jgrossi | CarbonCarbon |
Picker de tempo | OK | @jgrossi | CarbonCarbon |
Seletor de cores | OK | @jgrossi | string |
Repetidor | OK | @jgrossi | Collection de campos |
Conteúdo flexível | OK | @MarCoboom | Collection |
Todas as contribuições são bem -vindas. Antes de enviar sua solicitação de tração, dê uma olhada nas seguintes diretrizes:
develop
: git checkout -b my-fix-branch develop
Branch;phpunit
para facilitar o trabalho de aprovação;corcel/acf:develop
, sempre . Não envie PR para o nosso ramo master
! Incentivamos você a usar o git flow
(https://github.com/peteservanderdoes/gitflow-avh) para facilitar sua vida. Não é necessário, mas também será bom para sua carreira de desenvolvimento;PSR-2
(http://www.php-fig.org/psr/psr-2/). Para executar os testes de phpunit, execute phpunit
(se você tiver um executável global de phpunit) ou tente o seguinte comando:
./vendor/bin/phpunit
Você deve importar o arquivo database.sql
para um banco de dados dentro do seu ambiente local para fazer os testes funcionando. Basta descompactar o arquivo tests/config/database.sql.zip
e definir os campos de banco de dados, usuário e senha nos tests/config/bootstrap.php
.
Se você deseja acessar o painel de administração do WordPress, basta usar o nome de usuário como
admin
e senha123456
.
MIT Licença © Junior Grossi