WordPress データベースから直接データを取得できるようにする Model クラスのコレクション。
Corcel は、Eloquent ORM (Laravel フレームワークから) 上に構築された PHP クラスのコレクションであり、WordPress データベースに接続してデータを直接取得するための流暢なインターフェイスを提供します。
WordPress をバックエンド (管理パネル) または CMS として使用して、投稿やカスタム タイプなどを挿入したり、反対側で他の PHP アプリを使用してそれらのデータをクエリしたりできます (モデル レイヤーとして)。 Corcel は Laravel で使用する方が簡単ですが、Composer を使用する任意の PHP プロジェクトで自由に使用できます。
コーヒーを買ってきてください | Twitter でコーセルをフォローしてください
ララベル | コーセル |
---|---|
5.1.x | ~2.1.0 |
5.2.x | ~2.2.0 |
5.3.x | ~2.3.0 |
5.4.x | ~2.4.0 |
5.5.x | ~2.5.0 |
5.6.x | ~2.6.0 |
5.7.x | ~2.7.0 |
5.8.x | ~2.8.0 |
6.0.x | ^3.0.0 |
7.0.x | ^4.0.0 |
8.0.x | ^5.0.0 |
9.0.x | ^6.0.0 |
10.0.x | ^7.0.0 |
11.0.x | ^8.0.0 |
Corcel をプロジェクトにインストールするには、Composer を使用する必要があります。
composer require jgrossi/corcel
Corcel は、Laravel の Auto Discovery を使用して自身を登録します。
CorcelServiceProvider
config/app.php
に含める必要があります。
' providers ' => [
/*
* Package Service Providers...
*/
Corcel Laravel CorcelServiceProvider::class,
]
次に、データベースが正しく設定されていることを確認し、非常に簡単な方法でカスタム投稿タイプとショートコードを登録できるように構成ファイルを構成します。
ターミナルで次の Artisan コマンドを実行します。
php artisan vendor:publish --provider="CorcelLaravelCorcelServiceProvider"
これで、 config/corcel.php
構成ファイルが完成しました。このファイルで、WordPress テーブルなどとのデータベース接続を設定できます。
Corcel で使用するデータベースconnection
config/corcel.php
で設定するだけです。
config/database.php
ファイルに次のようなデータベース接続があると仮定します。
// File: /config/database.php
' connections ' => [
' mysql ' => [ // for Laravel database
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' database ' => ' mydatabase ' ,
' username ' => ' admin '
'password' => 'secret',
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => '' ,
' strict ' => false ,
' engine ' => null ,
],
' wordpress ' => [ // for WordPress database (used by Corcel)
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' database ' => ' mydatabase ' ,
' username ' => ' admin ' ,
' password ' => ' secret ' ,
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => ' wp_ ' ,
' strict ' => false ,
' engine ' => null ,
],
],
この場合、Corcel にwordpress
接続を使用する必要があるため、それを Corcel 構成ファイルconfig/corcel.php
に設定するだけです。
' connection ' => ' wordpress ' ,
ここでは、Corcel の要件に適合するようにデータベースを構成する必要があります。まず、まだロードされていない場合は、Composer autoload
ファイルを含める必要があります。
require __DIR__ . ' /vendor/autoload.php ' ;
次に、WordPress データベースのパラメータを設定する必要があります。
$ params = [
' database ' => ' database_name ' ,
' username ' => ' username ' ,
' password ' => ' pa$$word ' ,
' prefix ' => ' wp_ ' // default prefix is 'wp_', you can change to your own prefix
];
Corcel Database:: connect ( $ params );
すべての Eloquent パラメータを指定できますが、一部はデフォルトです (ただし、オーバーライドできます)。
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => ' wp_ ' , // Specify the prefix for WordPress tables, default prefix is 'wp_'
Post::method()
が表示されるたびに、AppPost
の独自の Post クラス (接続名を設定する) を使用している場合は、Post::Post::method()
ではなくAppPost::method()
を使用する必要があります。Post::method()
。すべての例は、この違いをすでに理解していることを前提としています。
例では、
Post::method()
が表示されるたびに、CorcelModelPost::method()
と想定されます。
// All published posts
$ posts = Post:: published ()-> get ();
$ posts = Post:: status ( ' publish ' )-> get ();
// A specific post
$ post = Post:: find ( 31 );
echo $ post -> post_title ;
オプションで、 CorcelPost
拡張する独自のPost
モデル (または Page など) を作成できます。次に、使用している接続名 (Corcel のデフォルトの接続名をオーバーライドする場合) を設定します。この場合はfoo-bar
。
CorcelModelPost
クラスを拡張すると、WordPress データベースから使用する必要があるものに応じてカスタム メソッドとロジックを追加できるようになり、プロジェクトに柔軟性が追加されます。
<?php // File: app/Post.php
namespace App ;
use Corcel Model Post as Corcel ;
class Post extends Corcel
{
protected $ connection = ' foo-bar ' ;
public function customMethod () {
//
}
}
したがって、独自のクラスを使用して WP データベース データをフェッチできるようになりました。
$ posts = App Post:: all (); // using the 'foo-bar' connection
Post
クラスを拡張する必要はなく、CorcelModelPost
や他のすべてのモデルを問題なく使用できることを覚えておいてください。
注: Corcel v1 では、
Post::save()
メソッドを使用してメタデータを保存できました。それはもう許されません。saveMeta()
またはcreateMeta()
(以下を参照) メソッドを使用してポストメタを保存します。
投稿からメタデータを取得することもできます。
// Get a custom meta value (like 'link' or whatever) from a post (any type)
$ post = Post:: find ( 31 );
echo $ post -> meta -> link ; // OR
echo $ post -> fields -> link ;
echo $ post -> link ; // OR
ユーザーからメタデータを作成または更新するには、 saveMeta()
メソッドまたはsaveField()
メソッドを使用するだけです。これらは Eloquent save()
メソッドと同様にbool
返します。
$ post = Post:: find ( 1 );
$ post -> saveMeta ( ' username ' , ' jgrossi ' );
多くのメタデータを同時に保存することもできます。
$ post = Post:: find ( 1 );
$ post -> saveMeta ([
' username ' => ' jgrossi ' ,
' url ' => ' http://jgrossi.com ' ,
]);
createMeta()
メソッドとcreateField()
メソッドもあります。これらはsaveX()
メソッドと同様に機能しますが、これらは作成のみに使用され、 bool
の代わりにPostMeta
で作成されたインスタンスを返します。
$ post = Post:: find ( 1 );
$ postMeta = $ post -> createMeta ( ' foo ' , ' bar ' ); // instance of PostMeta class
$ trueOrFalse = $ post -> saveMeta ( ' foo ' , ' baz ' ); // boolean
Post
(またはHasMetaFields
特性を使用する他のモデル) クラスのスコープを使用して、カスタム フィールド (メタ) によって投稿をクエリする方法は複数あります。
メタキーが存在するかどうかを確認するには、 hasMeta()
スコープを使用します。
// Finds a published post with a meta flag.
$post = Post::published()->hasMeta('featured_article')->first();
メタフィールドを正確に一致させたい場合は、値を指定してhasMeta()
スコープを使用できます。
// Find a published post which matches both meta_key and meta_value.
$ post = Post:: published ()-> hasMeta ( ' username ' , ' jgrossi ' )-> first ();
複数のメタフィールドを一致させる必要がある場合は、配列をパラメータとして渡すhasMeta()
スコープを使用することもできます。
$ post = Post:: hasMeta ([ ' username ' => ' jgrossi ' ])-> first ();
$ post = Post:: hasMeta ([ ' username ' => ' jgrossi ' , ' url ' => ' jgrossi.com ' ])-> first ();
// Or just passing the keys
$ post = Post:: hasMeta ([ ' username ' , ' url ' ])-> first ();
大文字と小文字を区別しない文字列と一致する必要がある場合、またはワイルドカードと一致する必要がある場合は、値を指定してhasMetaLike()
スコープを使用できます。これは SQL LIKE
演算子を使用するため、ワイルドカード演算子として「%」を使用します。
// Will match: 'J Grossi', 'J GROSSI', and 'j grossi'.
$ post = Post:: published ()-> hasMetaLike ( ' author ' , ' J GROSSI ' )-> first ();
// Using % as a wildcard will match: 'J Grossi', 'J GROSSI', 'j grossi', 'Junior Grossi' etc.
$ post = Post:: published ()-> hasMetaLike ( ' author ' , ' J%GROSSI ' )-> first ();
Post
クラスは「エイリアス」をサポートしているため、 Post
クラスを確認する場合は、静的な$aliases
配列で定義されているいくつかのエイリアス ( post_title
のtitle
やpost_content
のcontent
など) に注目する必要があります。
$ post = Post:: find ( 1 );
$ post -> title === $ post -> post_title ; // true
Post
クラスを拡張して独自のクラスを作成する場合は、 $aliases
も使用できます。独自のクラス内の静的プロパティに新しいエイリアスを追加するだけで、親Post
クラスからすべてのエイリアスが自動的に継承されます。
class A extends Corcel Post
{
protected static $ aliases = [
' foo ' => ' post_foo ' ,
];
}
$ a = A:: find ( 1 );
echo $ a -> foo ;
echo $ a -> title ; // from Post class
投稿を並べ替えるには、 Post
とUser
クラスの両方で、 newest()
スコープとoldest()
スコープを使用できます。
$ newest = Post:: newest ()-> first ();
$ oldest = Post:: oldest ()-> first ();
投稿を並べ替えるには、Eloquent paginate()
メソッドを使用するだけです。
$ posts = Post:: published ()-> paginate ( 5 );
foreach ( $ posts as $ post ) {
// ...
}
ページネーションのリンクを表示するには、 links()
メソッドを呼び出すだけです。
{{ $ posts -> links () }}
Advanced Custom Fields (ACF) プラグインによって作成されたカスタム フィールドを取得する場合は、 corcel/acf
プラグインをインストールし (詳細についてはここをクリック)、次のようにカスタム フィールドを呼び出す必要があります。
$ post = Post:: find ( 123 );
echo $ post -> acf -> some_radio_field ;
$ repeaterFields = $ post -> acf -> my_repeater_name ;
不要な SQL クエリを回避するには、要求するフィールド タイプを設定するだけです。通常、フィールド タイプを取得するには 2 つの SQL クエリが必要なので、フィールド タイプを指定したい場合は、これらの追加のクエリをスキップします。
$ post = Post:: find ( 123 );
echo $ post -> acf -> text ( ' text_field_name ' );
echo $ post -> acf -> boolean ( ' boolean_field_name ' );
カスタム投稿タイプも使用できます。 type(string)
メソッドを使用することも、独自のクラスを作成することもできます。
// using type() method
$ videos = Post:: type ( ' video ' )-> status ( ' publish ' )-> get ();
// using your own class
class Video extends Corcel Post
{
protected $ postType = ' video ' ;
}
$ videos = Video:: status ( ' publish ' )-> get ();
type()
メソッドを使用すると、Corcel はすべてのオブジェクトをCorcelPost
として返します。カスタム クラスを使用すると、カスタム メソッドやプロパティなどのクラスをカスタマイズし、すべてのオブジェクトをVideo
として返すなどの利点があります。
カスタム投稿タイプとメタデータ:
// Get 3 posts with custom post type (store) and show its address
$ stores = Post:: type ( ' store ' )-> status ( ' publish ' )-> take ( 3 )-> get ();
foreach ( $ stores as $ store ) {
$ storeAddress = $ store -> address ; // option 1
$ storeAddress = $ store -> meta -> address ; // option 2
$ storeAddress = $ store -> fields -> address ; // option 3
}
Post::type('video)->first()
やVideo::first()
などを呼び出すたびに、 CorcelModelPost
インスタンスを受け取ります。
カスタム投稿タイプに新しいクラスを作成することを選択した場合、その投稿タイプのすべてのインスタンスに対してこのクラスが返されるようにすることができます。
登録したいすべてのカスタム投稿タイプに対してPost::registerPostType()
メソッドを呼び出す代わりに、Corcel の構成ファイルを使用して、すべてのカスタム投稿とそのクラスをマップするだけです。これらは自動的に登録されます。
' post_types ' => [
' video ' => App Video::class,
' foo ' => App Foo::class,
]
したがって、カスタム投稿タイプをクエリするたびに、マップされたインスタンスが返されます。
これは、さまざまなタイプの投稿のコレクションを取得する場合 (たとえば、メニューで定義された投稿を取得する場合) に特に便利です。
//all objects in the $videos Collection will be instances of Post
$ videos = Post:: type ( ' video ' )-> status ( ' publish ' )-> get ();
// register the video custom post type and its particular class
Post:: registerPostType ( ' video ' , ' AppVideo ' )
//now all objects in the $videos Collection will be instances of Video
$ videos = Post:: type ( ' video ' )-> status ( ' publish ' )-> get ();
これは、Page や Post などの組み込みクラスに対しても行うことができます。関連する投稿タイプ文字列を使用して Page クラスまたは Post クラスを登録するだけで、デフォルトのオブジェクトの代わりにそのオブジェクトが返されます。
config/corcel.php
ファイル内の'shortcodes'
キーの下に、必要なすべてのショートコードをマッピングできます。この場合、 render()
メソッドを必要とするCorcelShortcode
インターフェイスimplements
独自のクラスを作成する必要があります。
' shortcodes ' => [
' foo ' => App Shortcodes FooShortcode::class,
' bar ' => App Shortcodes BarShortcode::class,
],
これはショートコード クラスのサンプルです。
class FakeShortcode implements Corcel Shortcode
{
/**
* @param ShortcodeInterface $shortcode
* @return string
*/
public function render ( ShortcodeInterface $ shortcode )
{
return sprintf (
' html-for-shortcode-%s-%s ' ,
$ shortcode -> getName (),
$ shortcode -> getParameter ( ' one ' )
);
}
}
Post
モデルでaddShortcode
メソッドを呼び出すことで、ショートコードを追加できます。
// [gallery id="1"]
Post:: addShortcode ( ' gallery ' , function ( $ shortcode ) {
return $ shortcode -> getName () . ' . ' . $ shortcode -> getParameter ( ' id ' );
});
$ post = Post:: find ( 1 );
echo $ post -> content ;
Laravel 5.5 はパッケージ自動検出を使用するため、ServiceProvider を手動で追加する必要はありません。
Laravel を使用している場合は、 boot
メソッドのAppProvidersAppServiceProvider
にショートコード ハンドラーを追加することをお勧めします。
ショートコードは、 thunderer/shortcodeライブラリを使用して解析されます。
いくつかの異なるパーサーが提供されています。 RegularParser
技術的に最も正確で、デフォルトで提供されます。これはほとんどの場合に適しています。ただし、ショートコードの解析で何らかの不規則性が発生した場合は、WordPress のショートコード正規表現により忠実に一致するWordpressParser
使用するように Corcel を構成する必要がある場合があります。これを行うには、Laravel を使用している場合は、 config/corcel.php
ファイルを編集し、優先パーサーのコメントを解除します。あるいは、これを独自のパーサーに置き換えることもできます。
' shortcode_parser ' => Thunder Shortcode Parser RegularParser::class,
// 'shortcode_parser' => ThunderShortcodeParserWordpressParser::class,
Laravel を使用していない場合は、 Post
などのShortcodes
トレイトを使用するクラスからsetShortcodeParser()
メソッドを呼び出して、実行時にこれを行うことができます。
$ post -> setShortcodeParser ( new WordpressParser ());
echo $ post -> content ; // content parsed with "WordpressParser" class
ショートコード パッケージの詳細については、ここをクリックしてください。
次のような特定の投稿の分類を取得できます。
$ post = Post:: find ( 1 );
$ taxonomy = $ post -> taxonomies ()-> first ();
echo $ taxonomy -> taxonomy ;
または、分類法を使用して投稿を検索することもできます。
$ post = Post:: taxonomy ( ' category ' , ' php ' )-> first ();
WordPress 関数get_post_format()
のように、投稿フォーマットを取得することもできます。
echo $ post -> getFormat (); // should return something like 'video', etc
ページはカスタム投稿タイプのようなものです。 Post::type('page')
またはCorcelModelPage
クラスを使用できます。
use Corcel Model Page ;
// Find a page by slug
$ page = Page:: slug ( ' about ' )-> first (); // OR
$ page = Post:: type ( ' page ' )-> slug ( ' about ' )-> first ();
echo $ page -> post_title ;
カテゴリまたは分類を取得するか、特定のカテゴリから投稿を読み込みます。それを達成するには複数の方法があります。
// all categories
$ cat = Taxonomy:: category ()-> slug ( ' uncategorized ' )-> posts -> first ();
echo " <pre> " ; print_r ( $ cat -> name ); echo " </pre> " ;
// only all categories and posts connected with it
$ cat = Taxonomy:: where ( ' taxonomy ' , ' category ' )-> with ( ' posts ' )-> get ();
$ cat -> each ( function ( $ category ) {
echo $ category -> name ;
});
// clean and simple all posts from a category
$ cat = Category:: slug ( ' uncategorized ' )-> posts -> first ();
$ cat -> posts -> each ( function ( $ post ) {
echo $ post -> post_title ;
});
Post
またはPage
から添付ファイルやリビジョンを取得します。
$ page = Page:: slug ( ' about ' )-> with ( ' attachment ' )-> first ();
// get feature image from page or post
print_r ( $ page -> attachment );
$ post = Post:: slug ( ' test ' )-> with ( ' revision ' )-> first ();
// get all revisions from a post or page
print_r ( $ post -> revision );
Post
またはPage
のサムネイルを取得します。
$ post = Post:: find ( 1 );
// Retrieve an instance of CorcelModelMetaThumbnailMeta.
print_r ( $ post -> thumbnail );
// For convenience you may also echo the thumbnail instance to get the URL of the original image.
echo $ post -> thumbnail ;
特定のサムネイル サイズを取得するには、サムネイル オブジェクトで->size()
メソッドを呼び出し、サムネイル サイズの文字列パラメータ (たとえば、 thumbnail
またはmedium
) を渡します。サムネイルが生成されている場合、このメソッドは画像メタデータの配列を返します。そうでない場合は、元の画像 URL がフォールバックとして返されます。
if ( $ post -> thumbnail !== null ) {
/**
* [
* 'file' => 'filename-300x300.jpg',
* 'width' => 300,
* 'height' => 300,
* 'mime-type' => 'image/jpeg',
* 'url' => 'http://localhost/wp-content/uploads/filename-300x300.jpg',
* ]
*/
print_r ( $ post -> thumbnail -> size ( Corcel Model Meta ThumbnailMeta:: SIZE_THUMBNAIL ));
// http://localhost/wp-content/uploads/filename.jpg
print_r ( $ post -> thumbnail -> size ( ' invalid_size ' ));
}
Corcel の以前のバージョンでは、このクラスは
Option
(単数形) ではなくOptions
と呼ばれていました。したがって、v2.0.0
以降は、常にこのクラスを単数形で使用するように注意してください。
Option::getAll()
メソッドは Corcel 2+ で削除され、Option::asArray($keys [])
が使用されました。
Option
クラスを使用して、 wp_options
テーブルからデータを取得できます。
$ siteUrl = Option:: get ( ' siteurl ' );
新しいオプションを追加することもできます。
Option:: add ( ' foo ' , ' bar ' ); // stored as string
Option:: add ( ' baz ' , [ ' one ' => ' two ' ]); // this will be serialized and saved
すべてのオプションを単純な配列で取得できます。
$ options = Option:: asArray ();
echo $ options [ ' siteurl ' ];
または、取得したいキーのみを指定することもできます。
$ options = Option:: asArray ([ ' siteurl ' , ' home ' , ' blogname ' ]);
echo $ options [ ' home ' ];
スラグによってメニューを取得するには、以下の構文を使用します。メニュー項目はitems
変数 ( CorcelModelMenuItem
オブジェクトのコレクション) にロードされます。
現在サポートされているメニュー項目は、ページ、投稿、カスタム リンク、およびカテゴリです。
MenuItem
クラスのインスタンスを取得したら、元のインスタンス (元の Page や Term など) を使用したい場合は、 MenuItem::instance()
メソッドを呼び出すだけです。 MenuItem
オブジェクトは、 post_type
がnav_menu_item
と等しい単なる投稿です。
$ menu = Menu:: slug ( ' primary ' )-> first ();
foreach ( $ menu -> items as $ item ) {
echo $ item -> instance ()-> title ; // if it's a Post
echo $ item -> instance ()-> name ; // if it's a Term
echo $ item -> instance ()-> link_text ; // if it's a custom link
}
instance()
メソッドは、一致するオブジェクトを返します。
post
メニュー項目のPost
インスタンス。page
メニュー項目のPage
インスタンス。custom
メニュー項目のCustomLink
インスタンス。category
メニュー項目のTerm
インスタンス。複数レベルのメニューを処理するには、たとえば、すべてのメニュー項目をループして適切なレベルに配置します。
MenuItem::parent()
メソッドを使用して、そのメニュー項目の親インスタンスを取得できます。
$ items = Menu:: slug ( ' foo ' )-> first ()-> items ;
$ parent = $ items -> first ()-> parent (); // Post, Page, CustomLink or Term (category)
メニュー項目を親に従ってグループ化するには、 $menu->items
コレクションの->groupBy()
メソッドを使用して、メニュー項目を$item->parent()->ID
ごとにグループ化します。
groupBy()
メソッドの詳細については、Laravel ドキュメントを参照してください。
投稿を操作するのと同じ方法でユーザーを操作できます。
// All users
$ users = User:: get ();
// A specific user
$ user = User:: find ( 1 );
echo $ user -> user_login ;
Laravel 5.4 以前を使用している場合は、 CorcelServiceProvider
プロバイダーが登録されていることを確認してください。
次に、 config/auth.php
でユーザープロバイダーを定義して、Laravel が WordPress ユーザーでログインできるようにします。
' providers ' => [
' users ' => [
' driver ' => ' corcel ' ,
' model ' => Corcel Model User::class,
],
],
これで、 Auth
ファサードを使用してユーザーを認証できるようになりました。
Auth:: validate ([
' email ' => ' [email protected] ' , // or using 'username' too
' password ' => ' secret ' ,
]);
Laravel のパスワード リセットを Corcel で機能させるには、パスワードがデータベースに保存される方法をオーバーライドする必要があります。これを行うには、 Auth/PasswordController.php
次のように変更する必要があります。
use App Http Controllers Controller ;
use Illuminate Foundation Auth ResetsPasswords ;
class PasswordController extends Controller
{
use ResetsPasswords;
に
use App Http Controllers Controller ;
use Illuminate Foundation Auth ResetsPasswords ;
use Corcel Laravel Auth ResetsPasswords as CorcelResetsPasswords ;
class PasswordController extends Controller
{
use ResetsPasswords, CorcelResetsPasswords {
CorcelResetsPasswords::resetPassword insteadof ResetsPasswords;
}
AuthUserProvider
クラスを使用してユーザーを手動で認証できます。
$ userProvider = new Corcel Laravel Auth AuthUserProvider ;
$ user = $ userProvider -> retrieveByCredentials ([ ' username ' => ' admin ' ]);
if (! is_null ( $ user ) && $ userProvider -> validateCredentials ( $ user , [ ' password ' => ' admin ' ])) {
// successfully login
}
ユーザーの認証情報として
username
と
phpunit テストを実行するには、次のコマンドを実行します。
./vendor/bin/phpunit
グローバルphpunit
コマンドがインストールされている場合は、次のように入力するだけです。
phpunit
すべてのテストは Sqlite と:memory
データベースを使用して記述されているため、メモリ内で実行されます。すべてのテストではfactories
とmigrations
使用します。詳細については、 tests/database/factories
とtests/database/migrations
ディレクトリを参照してください。
Corcel の改善に役立てるため、あらゆる貢献を歓迎します。
プル リクエスト (PR) を送信する前に、次のガイドラインを考慮してください。
Github で https://github.com/corcel/corcel をフォークします。
フォークされたリポジトリ (Corcel のリポジトリではない) をローカルにクローンし、修正したいバージョン ( 2.1
、 2.2
、 2.3
、 2.4
または2.5
) に基づいて独自のブランチを作成します。 git checkout -b my-fix-branch 2.5
;
すべてのコードを変更します。ここでは、追加する機能またはバグ修正 (まだテストされていない場合) について、少なくとも 1 つのテスト ケースを作成することを忘れないでください。私たちの目標は、コードの 100% をテストでカバーすることです。そのため、より良いコードを書くために協力してください ;-) テストの経験がない場合は、学ぶ良い機会になります。テスト ケースを見てみるだけで、それがいかにシンプルであるかがわかるでしょう。
単体テストをローカルで実行して、変更によって他のコードが壊れていないことを確認します。
新しいブランチをフォークされたリポジトリにプッシュします。通常はgit push origin HEAD
機能するはずです。
再度 GitHub で、カスタムのmy-fix-branch
ブランチ (フォークされたリポジトリから) から関連ブランチ ( Corcel corcel:master
corcel:2.5
) へのプル リクエスト (PR) を作成します。
承認を待ちます:-)
MIT ライセンス © Junior Grossi