alpineio / atlas
WordPress自定义文章类型管理器
Requires
- php: >=5.5.9
- illuminate/support: ^5.2
- nesbot/carbon: ^1.21
- phpdocumentor/reflection-docblock: ~3.0
Requires (Dev)
- alpineio/wp-develop: ^4.5
- fzaninotto/faker: ^1.6
- mockery/mockery: ^0.9.5
- phpspec/phpspec: ^2.5
- phpunit/phpunit: ^5.3
README
WordPress自定义文章类型管理器。扩展Piklist和原生WordPress功能。
概要
Piklist在向WordPress添加数据结构方面做得很好。关于Piklist
"Piklist是一个基于代码的框架,这意味着它没有用户界面。我们认为这是使用Piklist的最大好处之一。基于代码的系统允许你在字段配置和开发方面有更多的灵活性,并且从长远来看可以节省你的时间。使用Piklist,你通常可以使用你在某一节中编写的相同代码,并在另一节中使用它,允许你复制粘贴,并节省大量时间。"
我们同意基于代码、源代码控制的应用的优点。但是,我们认为复制粘贴不是大型应用开发的可持续模式。
Atlas是在复制粘贴配置模型之上的一个层。一个方便的面向对象层,用于使用类似于Laravel的风格向扩展文章类型添加基本和自定义功能。
正如他们所说关于Laravel的,“它是一个易于访问、功能强大的系统,为大型、健壮的应用提供了所需的工具”。我们希望Atlas在WordPress生态系统中也能达到同样的效果。
代码示例
以下是一个使用与Piklist兼容的数据字典定义的对象示例,并从文章继承了行为。
namespace MyCRM; use AlpineIO\Atlas\Contracts\SelfRegistration; use AlpineIO\Atlas\Post; use AlpineIO\Atlas\Traits\PiklistPostRegistration; use AlpineIO\Atlas\Types\PostRelationFieldType; /** * Class Contact * @package MyCRM * @property string $title Job Title * @property string $street_address Street Address * @property string $city City * @property string $state State * @property string $website Website URL * @property string $facebook Facebook URL * @property string $yelp Yelp URL */ class Contact extends Post implements SelfRegistration { use PiklistPostRegistration; }
接下来,我们可能将此CPT Contact用于WordPress单模板
use MyCRM\Contact; $contact = new Contact(get_the_ID());
我们所有的联系属性和成员功能都可在该对象中快速访问并在WordPress模板中显示。
使用PikList构建数据模型
首先,使用PikList构建你的管理界面
https://piklist.com/user-guide/tutorials/getting-started-with-piklist/
然后,使用Atlas扩展它。
动机
我们喜欢PikList项目的精神。然而,我们认为为了维护大型应用,我们需要一个更现代的对象结构。作为Laravel的用户,我们怀念优雅和易用性,并觉得我们可以帮忙。
安装
使用Composer
$ composer require alpineio/atlas
{ "require": { "alpineio/atlas": "~1.0.4" } }
<?php require 'vendor/autoload.php'; use AlpineIO\Atlas\Services\RegisterWordPressTypes; use MyCRM\Contact; use MyCRM\Team; // Create a filter to return the classes function my_crm_object_types( $types = [] ) { return array_merge( $types, [ Contact::class, Team::class ] ); } add_filter('alpineio_atlas_models', 'my_crm_object_types'); RegisterWordPressTypes::register();
测试
即将推出。
贡献者
我们欢迎对该项目提供更多帮助。请随意分支并发送pull请求。
许可
GPL2