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 安装的第三方包有机的组合在了一起,然后在这个组合的基础上,进行 Theme Development。这些东西加在一起,就是一个基于 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')
<h1>账户</h1>
<p>欢迎 {{ $name }}</p>
@foreach($posts as $post)
<h2>{{ $post->post_title }}</h2>
@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 Database添加对应的 Model 支持。因为可以很方便的使用 Composer 把第三方包加入框架中,我们可以使用 Corcel 来为框架添加完善的 Eloquent ORM 支持。
开始使用 Themosis Framework 开发 WordPress 应用
Themosis 官方网站为我们提供了详细的使用文档,我们可以按照官方文档一步一步的开始使用 Themosis 框架开发 WordPress 应用。事实上,截止本文发布为止,我们已经使用这个框架开发了 4 个WordPress主题了,确实可以在很大程度上提高 WordPress 应用开发的效率。
9 thoughts on “基于 Laravel 的 WordPress MVC 主题应用开发框架 —— Themosis Framework”
测试了一下,确实不错,在 WordPress 里面开发应用的方式简单了很多。
嗯,MVC 是一个成熟高效的架构,WordPress 一直缺这个。
刀哥,关于Themosis的开发案例源代码在哪里可以找到?最近也在研究这套框架,想找一个作为学习参考。
官方的示例项目:https://github.com/themosis/bookstore。
好的,感谢刀哥。有条件有时间还希望刀哥录点视频帮助帮助新人……
Themosis 和 Sage 都是开发WordPress主题的吗?不知道哪个好用,请教一下
两个框架的使用场景不一样,Sage 主要用来开发内容展示性的主题,Themosis 集成了一些 Laravel 的东西,用来开发自定义功能比较方便。
好的,谢谢,我还是先把sage用顺手了吧。
嗯,框架用好一个就行了。