iamfredric/platon-theme

Wordpress主题启动套件

dev-main 2022-08-12 11:49 UTC

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>