基于 Laravel 的 WordPress MVC 主题应用开发框架 —— Themosis Framework

文 / @WordPress主题

关于ThemosisFramework框架

我想和大家分享一个企业级的WordPress MVC开发框架,那就是ThemosisFramework框架。该框架使用了Laravel的一些组件,如Router、Container、Http、Event、View、FileSystem、Database等,来实现面向对象的WordPress应用开发,可以帮助我们大幅提高WordPress应用开发效率。如果我们需要为WordPress添加比较多的自定义功能,比如,在线购买、会员中心、推广返利,CRM应用等,可以尝试一下这个框架。

ThemosisFramework框架特性简介

首先来看一下 Themosis框架官方提供的架构图。从图中可以看出,Themosis库是整个框架的底层,然后在 Themosis库的基础上,把WordPress内核、ThemosisFramework框架、WordPress插件和通过Composer安装的第三方包有机的组合在了一起。然后,在这个组合的基础上进行WordPress主题开发,这些东西加在一起,就是一个基于Themosis框架的WordPress应用。

ThemosisMVC框架的实现原理

Themosis框架通过拦截WordPress默认页面路由或添加自定义路由,把用户请求转发到控制器。然后再结合模型和视图来构建基于WordPress主题或插件的应用程序。需要注意的是,如果我们没有通过自定义路由拦截WordPress默认的路由,WordPress默认路由还是按照自己默认的方式查找模版并显示。如果拦截了,WordPress页面则会按照我们指定的模版显示页面。这个特性兼顾了WordPress默认路由和模版,非常方便。

下面是一个代码片段,我们可以通过自定义路由来实现其中的自定义功能。


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类库,我们可以添加Packagist中的任何第三方PHP库来为我们的应用添加功能支持。如通过下面的命令为框架添加Mailgun类。


$ composer require mailgun/mailgun-php

数据库ORM支持

Themosis框架目前虽然集成了Laravel的Database组件,但是并没有针对WordPress数据库添加对应的Model支持。虽然有些遗憾,但是因为可以很方便地使用Composer把第三方包加入框架中,我们可以使用Corcel来为框架添加完善的Eloquent ORM支持。

开始使用ThemosisFramework开发WordPress应用

Themosis官方网站提供了详细的使用文档,我们可以按照官方文档一步一步地开始使用Themosis框架开发WordPress应用。截止本文发布为止,我们已经使用这个框架开发了4个WordPress主题了,它确实可以在很大程度上提高WordPress应用开发的效率。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。