Corcel内のすべての高度なカスタムフィールド(ACF)フィールドを簡単に取得できます。
このCorcelプラグインを使用すると、Laravelフレームワークから同じ構文の雄弁さを使用して、ACFプラグインによって作成されたWordPressカスタムフィールドを取得できます。 PHPアプリケーションでWordPressバックエンドを使用して、雄弁なモデルとコレクションを使用して開発を改善できます。
Corcelの仕組みの詳細については、リポジトリをご覧ください。
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
ようなものを使用する場合、プラグインはACFアプローチに従ってフィールドタイプを取得するためにいくつかの追加のSQLクエリを作成する必要があります。そこで、これらの余分なクエリを作成せずにそれを取得する別の方法を作成しました。あなたは、機能としての投稿タイプとは何かをプラグインに通知するだけです。
// 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つの(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(およびこのプラグイン)は正しいことをします。
このプラグインは、corcel CorcelAcfFieldFactory
CorcelAcfFieldBasicField
abstractクラス内の基本ロジックで動作します。これには、 field key
、 value
などを返すための多くの有用な関数があります。フィールドタイプに応じて、フィールドタイプが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 |
oembed | わかりました | @jgrossi | string |
画像 | わかりました | @jgrossi | CorcelAcfFieldImage |
ファイル | わかりました | @jgrossi | CorcelAcfFieldFile |
ギャラリー | わかりました | @jgrossi | CorcelAcfFieldGallery |
選択します | わかりました | @jgrossi | string またはarray |
チェックボックス | わかりました | @jgrossi | string またはarray |
無線 | わかりました | @jgrossi | string |
true/false | わかりました | @jgrossi | boolean |
オブジェクトを投稿します | わかりました | @jgrossi | CorcelPost |
ページリンク | わかりました | @jgrossi | string |
関係 | わかりました | @jgrossi | CorcelPost またはPost のCollection |
分類 | わかりました | @jgrossi | CorcelTerm またはTerm のCollection |
ユーザー | わかりました | @jgrossi | CorcelUser |
Googleマップ | ない | ||
デートピッカー | わかりました | @jgrossi | CarbonCarbon |
デートタイムピッカー | わかりました | @jgrossi | CarbonCarbon |
タイムピッカー | わかりました | @jgrossi | CarbonCarbon |
カラーピッカー | わかりました | @jgrossi | string |
リピータ | わかりました | @jgrossi | フィールドのCollection |
柔軟なコンテンツ | わかりました | @marcoboom | Collection |
すべての貢献は大歓迎です。プルリクエストを送信する前に、次のガイドラインをご覧ください。
develop
ブランチに基づいて、新しいgitブランチに変更を加えます。git git checkout -b my-fix-branch develop
。phpunit
コマンドの結果を貼り付けてください。corcel/acf:develop
、 Alwaysにプルリクエストを送信します。 master
ブランチにPRを送らないでください! git flow
(https://github.com/petervanderdoes/gitflow-avh)ワークフローを使用して、生活を楽にすることをお勧めします。それは必要ではありませんが、それはあなたの開発キャリアにも良いでしょう。PSR-2
コンベンション(http://www.php-fig.org/psr/psr-2/)に従っていることを確認してください。 phpunitテストを実行するには、 phpunit
を実行(グローバルPhpunit実行可能ファイルがある場合)または次のコマンドを試してください。
./vendor/bin/phpunit
database.sql
ファイルをローカル環境内のデータベースにインポートして、テストを機能させる必要があります。 tests/config/database.sql.zip
ファイルを解凍し、 tests/config/bootstrap.php
でデータベース、ユーザー、パスワードフィールドを設定します。
WordPress Adminパネルにアクセスする場合は、
admin
and password123456
としてユーザー名を使用してください。
MITライセンス©ジュニアグロッシ