轻松获取Corcel内部的所有高级自定义字段(ACF)字段。
此Corcel插件允许您使用Laravel Framework中使用相同的雄辩语法来获取由ACF插件创建的WordPress自定义字段。您可以使用任何PHP应用程序使用WordPress后端使用雄辩的模型和集合来改善开发。
有关Corcel工作方式的更多信息,请访问存储库。
科塞尔 | 拉拉维尔 | php |
---|---|---|
^4.0 | 7.x | >=7.2 |
^5.0 | 8.x | >=7.3 |
为Corcel安装ACF插件很容易:
composer require corcel/acf
此插件需要Corcel,但是不用担心,如果缺少它也将安装。
这是一个开发版本,因此使用情况可以进一步改变。该插件的所需行为是允许这样做:
$ post = Post :: find ( 1 );
echo $ post -> acf -> url ; // returns the url custom field created using ACF
当使用$post->acf->url
类的东西时,插件必须进行一些额外的SQL查询才能根据ACF方法获取现场类型。因此,我们创建了另一种方法来获取它,而无需进行这些额外的查询。您只有信息插件是什么是帖子类型,作为函数:
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
PS:方法名称应以
camelCase()
格式编写。因此,例如,对于字段类型date_picker
您应该编写$post->acf->datePicker('fieldName')
。该插件可为您提供从camelCase
转换为snake_case
的转换。
使用corcel中的默认$post->meta->field_name
返回wp_postmeta
表中的meta_value
列的值。它可以是字符串,整数甚至串行的数组。问题是,当您使用ACF时,此值可能不仅仅在于。例如,如果您有整数,则可以是post id
, user id
甚至一系列posts ids
。
ACF必须制作2(两个)SQL查询才能找出字段类型,因此,根据meta_value
的类型,它具有不同的行为。例如,如果该值为45
,并且post type
为post_object
,则值45
是具有ID 45
的帖子。因此,在这种情况下,Corcel应该返回CorcelPost
实例,而不仅仅是整数。
首先,ACF在wp_postmeta
表中获取meta_value
,其中meta_key
是_field_name
之类的,并且帖子ID是您想要自定义字段的帖子的ID。返回的值是field key
,看起来像该field_57f421a2b81bd
。使用此键,它在wp_posts
中获取相应的帖子,其中post_name = 'field_57f421a2b81bd'
。通过结果,它将获得post_content
值,一个序列化数组,对其进行序列化并在type
键上获取内容。这是字段类型。据此,ACF(以及此插件)做正确的事情。
该插件可与CorcelAcfFieldBasicField
Abstract类内的基本逻辑一起使用,具有许多有用的功能来返回field key
, value
等。CORCEL CorcelAcfFieldFactory
负责返回正确的字段实例根据字段类型,因此,如果字段类型为post_object
则返回CorcelAcfFieldPostObject
的实例,并且它将在get()
方法中返回CorcelPost
的实例。
首先,我们应该创建字段类和测试用例。在我们必须设置Corcel如何使用corcel/acf
插件之后,以格式$post->meta->field
或$post->acf->field
返回具有不同行为的字段(完成! )。
Repeater
场创建更多的单元测试;Flexible Content
字段(完成!);whereIn()
条款来改进该目标。一些字段仍缺少(下面的检查表并贡献)。
场地 | 地位 | 开发人员 | 返回 |
---|---|---|---|
文本 | 好的 | @jgrossi | string |
Textarea | 好的 | @jgrossi | string |
数字 | 好的 | @jgrossi | number |
电子邮件 | 好的 | @jgrossi | string |
URL | 好的 | @jgrossi | string |
密码 | 好的 | @jgrossi | string |
Wysiwyg(编辑) | 好的 | @jgrossi | string |
宣告 | 好的 | @jgrossi | string |
图像 | 好的 | @jgrossi | CorcelAcfFieldImage |
文件 | 好的 | @jgrossi | CorcelAcfFieldFile |
画廊 | 好的 | @jgrossi | CorcelAcfFieldGallery |
选择 | 好的 | @jgrossi | string 或array |
复选框 | 好的 | @jgrossi | string 或array |
收音机 | 好的 | @jgrossi | string |
是/错误 | 好的 | @jgrossi | boolean |
帖子对象 | 好的 | @jgrossi | CorcelPost |
页面链接 | 好的 | @jgrossi | string |
关系 | 好的 | @jgrossi | Post CorcelPost 或Collection |
分类学 | 好的 | @jgrossi | CorcelTerm 或Term 的Collection |
用户 | 好的 | @jgrossi | CorcelUser |
Google地图 | 丢失的 | ||
日期选择器 | 好的 | @jgrossi | CarbonCarbon |
日期时间选择器 | 好的 | @jgrossi | CarbonCarbon |
时间选择器 | 好的 | @jgrossi | CarbonCarbon |
彩色选择器 | 好的 | @jgrossi | string |
中继器 | 好的 | @jgrossi | 集合的Collection |
灵活的内容 | 好的 | @marcoboom | Collection |
欢迎所有贡献。在提交拉动请求之前,请先了解以下准则:
develop
分支: git checkout -b my-fix-branch develop
,在新的GIT分支机构中进行更改;phpunit
命令的结果促进批准工作;corcel/acf:develop
始终开发。不要将公关发送给我们的master
分支!我们鼓励您使用git flow
(https://github.com/petervanderdoes/gitflow-avh)工作流程,以使您的生活更轻松。这不是必需的,但也对您的发展事业有好处;PSR-2
公约(http://www.php-fig.org/psr/psr/psr-2/)。 要运行PHPUNIT测试,请执行phpunit
(如果您具有全局phpunit可执行文件)或尝试以下命令:
./vendor/bin/phpunit
您应该将database.sql
文件导入到本地环境内的数据库中,以使测试正常工作。只需解压缩tests/config/database.sql.zip
文件,然后在tests/config/bootstrap.php
中设置数据库,用户和密码字段。
如果要访问WordPress Admin面板,只需将用户名作为
admin
和密码123456
即可。
麻省理工学院许可©Junior Grossi