td / framework
10 Degrees 基础主题和插件框架
Requires
- php: ^7.3|^8.0
- erusev/parsedown: ^1.7
- illuminate/container: ^8.33
- illuminate/filesystem: ^8.33
- illuminate/http: ^8.33
- illuminate/support: ^8.33
- jgrossi/corcel: ^5.0
- johnbillion/extended-cpts: ^4.5
- symfony/finder: ^5.2
This package is auto-updated.
Last update: 2024-09-11 22:09:36 UTC
README
10 Degrees 框架是一系列组件,旨在简化开发过程。
该框架具有命名空间化的 wp-cli 命令和一系列常用命令。
安装
composer require td/framework
组件
Acf
块
高级自定义字段服务提供商和命令。
在 app/Acf/Blocks
目录中创建一个 Block
。
wp td make:block BlockName
然后,将块类名添加到 AcfServiceProvider
中的 $blocks
属性。块将由服务提供商加载。
字段组
在 app/Acf/FieldGroups
目录中创建一个 FieldGroup
。
wp td make:field-group FieldGroupName
然后,将字段组类名添加到 AcfServiceProvider
中的 $fieldGroups
属性。字段组将由服务提供商加载。
控制台
Console
组件是核心命令服务,用于框架中所有 make
命令。
基础
基础组件包括基础应用程序和核心框架服务和命令。
邮件
Mailer
类提供了一个用于编写电子邮件的流畅接口。
在 app/Mail
目录中创建一个 Mail
。
wp td make:mail UserRegistered
邮件器类提供了一个构造函数,用于传递参数给类,以及一个 build
方法来构建邮件。
构建方法应包含不可更改的逻辑,例如电子邮件主题和模板。当调用可邮寄项时,您可以添加特定的电子邮件属性,如 to
、cc
、bcc
地址。
<?php
namespace App\Mail;
use TenDegrees\Mail\Mailer;
class UserRegistered extends Mailer
{
/**
* The registration pdf file path
*
* @var string
*/
protected $attachment;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(string $attachment)
{
$this->attachment = $attachment;
}
/**
* Build the message.
*
* @return \TenDegrees\Mail\Mailer
*/
public function build(): Mailer
{
return $this->from('support@10degrees.uk')
->subject('Thanks for registering')
->attachment($this->attachment)
->markdown('emails.registered');
}
}
一旦加载了 wp_mail
函数,就可以发送邮件,因此您应该用 add_action('init')
将 Mail
类包装起来,以确保函数可用。
<?php
use App\Mail\UserRegistered;
use Tendegrees\Database\Models\User;
use Tendegrees\Support\Facades\Mail;
use WP_User;
// pass an email string:
Mail::to('email@example.com')->send(new UserRegistered());
Mail::to('Name <email@example.com>')->send(new UserRegistered());
// pass a WP_User instance:
Mail::to(wp_get_current_user())->send(new UserRegistered());
// pass a User model instance
Mail::to(User::find(1))->send(new UserRegistered());
// you can test your emails by using the render method.
echo Mail::render(new UserRegistered());
to
、cc
和 bcc
方法非常灵活,可以接受以下内容:
- 一个字符串
- 一个 WP_User 实例
- 一个用户实例
- 上述数组的集合
- 上述集合的集合
路由
路由定义在 routes/ajax.php
或 routes/api.php
文件中。
使用 ajax
方法定义 AJAX 路由。 $uri
指的是 "action" 参数。 $action
参数是 Closure
或 Controller
类名。
Route::ajax($uri, $action);
例如
// wp-admin/admin-ajax.php?action=ajax_action
Route::ajax('ajax_action', function () {
return td_view('ajax.view');
});
使用 get
、post
、put
、patch
、delete
、options
、any
或 matches
方法定义 REST 路由。 $uri
是 REST 端点(不带命名空间)和 $action
是 Closure
或 Controller
类名。
// Standard HTTP methods
Route::get($uri, $action);
Route::post($uri, $action);
Route::put($uri, $action);
Route::patch($uri, $action);
Route::delete($uri, $action);
Route::options($uri, $action);
// or you can specify any:
Route::any($uri, $action); // GET, HEAD', POST, PUT, PATCH, DELETE, OPTIONS
// or you can match certain methods:
Route::matches(['PUT', 'PATCH'], $uri, $action)
例如
// wp-json/api/rest/action
Route::get('rest/action', function () {
return ['data' => []];
});
REST URI 解析以允许传递参数
Route::get('users/{id}', function(int $id) {
return (new WP_User($id))->to_array();
});
路由操作
路由 "操作" 可以是闭包
Route::ajax('ajax_action', function () {
return td_view('ajax.view');
});
...或者一个 Controller
Route::ajax('ajax_action', AjaxActionController::class); // will use the __invoke method
可以定义特定的方法
Route::ajax('ajax_action', [AjaxActionController::class, 'index']);
控制器 🚧
在 app/Http/Controllers
目录中创建一个 Controller
。
wp td make:controller LoginController
AJAX 和 REST 控制器是相同的
中间件 🚧
在 app/Http/Middleware
目录中创建一个 Middleware
。
wp td make:middleware VerifyApiKey
UrlGenerator
URLGenerator
类将许多 WordPress URL 函数整合到一个 api 中,可以使用 URL
门面使用。
URL::home() // https://example.com
URL::to('members') // https://example.com/members
URL::login() // https://example.com/wp-login.php?redirect_to=%2F
URL::logout() // https://example.com/wp-login.php?action=logout&redirect_to=%2F&_wpnonce=dd5186a703
URL::register() // https://example.com/wp-login.php?action=register
URL::ajax('ajax_action') // https://example.com/wp-admin/admin-ajax.php?action=ajax_action
URL::admin() // https://example.com/wp-admin/
URL::rest('api/rest-action') // https://example.com/wp-json/api/rest-action
URL::redirect('/') // wp_redirect(); die();
URL::current()
URL::full()
URL::previous()
URL::isValidUrl('https://example.com')
支持 🚧
支持包括 ServiceProvider
、Pipeline
和 Facades
。
视图
一个视图类,用于轻松包含模板。视图存储在 views
目录中。
View::make
方法接受从 views
目录相对于的路径,这可以使用点来表示目录。例如:
/views/posts/single.php
将会被转换为 posts.single
。
第二个参数是一个可选的数组,它将被提取到模板中。
$post = get_post(1);
echo View::make('posts.single', compact('post'));
<!-- /views/posts/single.php -->
<h1><?php echo $post->post_title; ?></h1>
WordPress 🚧
WordPress 服务提供者和命令。
在 app/WordPress/PostTypes
目录中创建一个 PostType
。
wp td make:post-type PostTypeName
在 app/WordPress/Shortcodes
目录中创建一个 Shortcode
。
wp td make:shortcode ShortcodeName