輕鬆獲取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