Themosis Framework 框架是一个企业级的 WordPress MVC 开发框架,该框架使用了 Laravel 的一些组件(主要是 Router、Container、Http、Event、View、File System、Database)来实现面向对象的 WordPress 应用开发,可以帮助我们大幅提高 WordPress 应用开发效率。如果我们需要为 WordPress 添加比较多的自定义功能,比如,在线购买、会员中心、推广返利,CRM 应用等,可以尝试一些这个框架。
Themosis Framework 框架特性简介
我们先来看一下 Themosis 框架官方提供的架构图,从图中可以看出,Themosis 库是整个框架的底层,然后在 Themosis 库 的基础上,把 WordPress 内核、Themosis Framework 框架、WordPress插件和通过 Composer 安装的第三方包有机的组合在了一起,然后在这个组合的基础上,进行 WordPress主题开发。这些东西加在一起,就是一个基于 Themosis 框架的 WordPress 应用。
Themosis MVC 框架实现原理
Themosis 框架通过拦截 WordPress 默认页面路由、或者添加自定义路由,把用户请求转发到控制器,然后再结合模型和视图来构建基于WordPress主题或插件的应用程序。需要注意的是,如果我们没有通过自定义路由拦截 WordPress 默认的路由,WordPress 默认路由还是按照自己默认的方式查找模版并显示,如果拦截了,WordPress 页面则会按照我们指定的模版显示页面。这个特性兼顾了 WordPress 默认路由和模版,非常方便。我们可以通过下面的代码快速认识一下 Themosis 框架自定义路由的使用方法。
Route::get('users/{name}', function ($name) { // 获取用户名为 $name 的用户,$name 变量是从 URL 中获取的 $user = Users::getByName($name); // 使用 account/profile.blade.php 模版文件渲染页面 return view('account.profile', ['user' => $user]); }); Route::get('home', function ($post, $query) { // 使用 pages/home.blade.php 显示 WordPress 首页 return view('pages.home', [ 'posts' => $query->get_posts() ]); });
可以自由选择的模版系统
Themosis 框架支持 Laravel 的 Blade 模版引擎和 Twig 模版引擎,我们在开发的时候可以自由选择,如果我们不想使用模版引擎,直接使用纯 PHP 来写模版也是可以的。下面的示例是 Laravel Blade 模版引擎的代码片段,使用方法和在 Laravel 中使用一样。
@extends('layouts.main') @section('content')账户
欢迎 {{ $name }}
@foreach($posts as $post){{ $post->post_title }}
@endforeach @endsection
面向对象的 WordPress 功能增强
Themosis 框架可以通我们使用内置的 WordPress 功能增强类,以面向对象的方式来快速设置自定义文章类型,自定义分类法,Metabox,自定义字段,管理页面,设置等等。相对 WordPress 内置的函数,要方便和清晰不少。虽然好用,但是有一定的学习成本,如果不习惯,我们完全可以使用 WordPress 的方式来实现上面的自定义。
// 添加文章类型 $books = PostType::make('books', 'Books', 'Book')->set(); // 添加自定义 Metabox Metabox::make('Details', $slug)->set([ Field::text('isbn'), Field::collection('gallery') ]); // 添加自定义分类法 Taxonomy::make('authors', $slug, 'Authors', 'Author')->set();
Packagist 海量第三方库支持
因为可以使用 Composer 来安装 PHP 类库,我们可以添加 Pakagist 中的任何第三方 PHP 库来为我们的应用添加功能支持。如通过下面的命令为框架添加 Mailgun 类。
$ composer require mailgun/mailgun-php
数据库 ORM 支持
Themosis 框架目前虽然集成了 Laravel 的 Database 组件,但是并没有针对 WordPress 数据库添加对应的 Model 支持。因为可以很方便的使用 Composer 把第三方包加入框架中,我们可以使用 Corcel 来为框架添加完善的 Eloquent ORM 支持。
开始使用 Themosis Framework 开发 WordPress 应用
Themosis 官方网站为我们提供了详细的使用文档,我们可以按照官方文档一步一步的开始使用 Themosis 框架开发 WordPress 应用。事实上,截止本文发布为止,我们已经使用这个框架开发了 4 个WordPress主题了,确实可以在很大程度上提高 WordPress 应用开发的效率。