iamfredric / platon-theme
Wordpress主题启动套件
dev-main
2022-08-12 11:49 UTC
Requires
- php: ^8.0
- ext-json: *
- iamfredric/platon: 0.5.0
- vlucas/phpdotenv: ^5.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-12 16:08:10 UTC
README
Platon 是一个在 WordPress 上运行的框架,深受 Laravel 启发。Platon 使 WordPress 变得面向对象,并添加了一些智能自动功能。
安装
composer create-project iamfredric/platon-theme your-path --stability=dev
- 将所有 [THEME_TITLE] 替换为您的主题标题。(style.css + config/app.php)
- 将所有 [THEME_SLUG] 替换为您的主题缩略名。(style.css + config/app.php)
路由
通常,WordPress 通过查看文件名来决定渲染哪个模板。
在 platon 中,这也有效。然而,这不是我们的目标。相反,我们有一个 routes/web.php 文件,在其中定义路由。
这些路由与 WordPress 模板命名方案相对应。
<?php use Platon\Facades\Route; Route::register('front-page', [PageController::class, 'home']); Route::register('page', [PageController::class, 'show']); Route::register('index', [PostController::class, 'index']); Route::register('single', [PostController::class, 'show']); Route::register('single-project', [PostController::class, 'index']);
控制器
控制器是一个处理数据,使其到达视图层的预处理位置。
<?php namespace App\Http\Controllers; use App\Models\Page; class PageController { public function show(Page $page): View { return view('pages.show', compact('page')); } }
页面从容器中解析。这基本上等同于
$page = Page::current();
模型
模型实际上只是 WP_Post 对象的包装。
它提供了一些很好的功能。
例如,这是一个帖子,模型名称决定了帖子类型。
class Post extends Model {}
<h1>{{ $post->title }}</h1> <time datetime="{{ $post->created }}"> Created at: {{ $post->created->format('j F Y') }} </time> <div> {!! $post->content !!} </div>