Corcel 내부의 ACF (Advanced Custom Fields) 필드를 쉽게 가져 오십시오.
이 Corcel 플러그인을 사용하면 Laravel Framework에서 Eloquent와 동일한 구문을 사용하여 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
과 같은 것을 사용하는 경우 플러그인은 ACF 접근법에 따라 필드 유형을 가져 오려면 추가 SQL 쿼리를 만들어야합니다. 그래서 우리는 추가 쿼리를 만들지 않고 그것을 얻을 수있는 다른 방법을 만들었습니다. 플러그인 정보만으로 게시물 유형이 있습니다.
// Extra queries way
echo $ post -> acf -> author_username ; // it's a User field
// Without extra queries
echo $ post -> acf -> user ( ' author_username ' );
추신 : 메소드 이름은
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
과 비슷하며 Post ID는 사용자 정의 필드를 원하는 게시물의 ID입니다. 반환 된 값은 field key
이며이 field_57f421a2b81bd
처럼 보입니다. 이 키를 사용하면 wp_posts
에서 해당 게시물을 가져옵니다. 여기서 post_name = 'field_57f421a2b81bd'
. 결과를 사용하면 직렬화 된 배열 인 post_content
값을 가져오고이를 실시하고 type
키에서 내용을 가져옵니다. 이것이 필드 유형입니다. 이에 따르면 ACF (및이 플러그인)는 옳은 일을합니다.
이 플러그인은 field key
, value
등을 반환하는 유용한 기능이 많이있는 CorcelAcfFieldBasicField
Abstract 클래스 내부의 기본 논리와 함께 작동합니다. 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 |
OEMBED | 좋아요 | @jgrossi | string |
영상 | 좋아요 | @jgrossi | CorcelAcfFieldImage |
파일 | 좋아요 | @jgrossi | CorcelAcfFieldFile |
갱도 | 좋아요 | @jgrossi | CorcelAcfFieldGallery |
선택하다 | 좋아요 | @jgrossi | string 또는 array |
확인란 | 좋아요 | @jgrossi | string 또는 array |
라디오 | 좋아요 | @jgrossi | string |
참/거짓 | 좋아요 | @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 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
및 암호123456
으로 사용하십시오.
MIT 라이센스 © Junior Grossi