parfaitementweb / wordpress-starter-theme
Requires
- parfaitementweb/wordpress-starter-core: 1.1.*
- wpackagist-plugin/classic-editor: ^1.3
README
此WordPress入门主题旨在考虑现代PHP开发实践。
此入门主题基于underscores.me文件结构,仅包含一套额外的可选工具,以简化您的开发。您仍然可以像其他任何基本WordPress主题一样开发您的主题。
主题包括以下内容
- Composer
- Laravel 视图 Blade
- 控制器
- Laravel Mix
- 使用 ACF Blocks 的自定义 Gutenberg 块
- Laravel 集合
- 字符串助手
- Tailwind CSS
安装
执行以下命令
cd wp-content/themes
composer create-project parfaitementweb/wordpress-starter-theme
cd yourtemplatename
npm install
npm run watch
# Build your assets for production using
# npm run production
# Read more about Laravel Mix on their official documentation.
控制器
默认的 WordPress 模板文件(如 index.php、page.php 等)现在是您的控制器。在它们中定义所有特定模板的逻辑。
如何使用
-
WordPress 模板文件不应直接返回 HTML 或 PHP 代码。
-
您应该使用
$core = new Parfaitement\Core;
调用我们的核心库。这将实例化一个包含网站跨多个部分所需许多公共函数的对象。 -
使用
$core->render($view, $data)
方法返回您的 Laravel Blade。$view
是视图的名称(不带.blade.php
扩展名)。$data
是您想要传递到视图的变量数组。视图存储在 resources/views 文件夹下。
$core
变量提供额外的功能
- 使用
$core->$request
访问 Laravel HTTP 请求。例如,使用$core->request->input('name')
获取输入。 - 使用
$core->include_style()
为 此模板仅 注入特定的 CSS 文件 - 使用
$core->include_script()
为 此模板仅 注入特定的 JS 文件
视图
Blade 视图 *.blade.php
存储在 resources/views
文件夹中,并使用 Laravel Blade 模板引擎解析。
资源
所有资源都存储在 resources/assets
文件夹中。通常如下所示
- resources/assets/images
- resources/assets/js
- resources/assets/sass
资源使用 Laravel Mix 编译。Laravel Mix 是在 webpack 之上的一层干净的层,使 80% 的用例简单到令人发笑。
开箱即用,它包括
- 最小化 & 压缩
- 支持 ES2017、Vue 和热替换的 JS
- CSS 预处理器。LESS、SASS、Stylus & PostCss
- Browsersync
- 缓存破坏(自动版本控制)
CSS 文件默认使用 POSTCSS 处理。
mix()
我们已在模板内添加了对mix()
辅助函数的支持,用于缓存破坏。当你在控制器中使用$core->include_style()
或$core->include_script()
时,你的脚本和样式将被自动缓存破坏。
从模板链接到资源
使用我们定制的asset()
辅助函数来链接你的资源(图像、图标等)。
<img src="{{ asset('/images/logo.png') }}" />`
Tailwind CSS
本主题包含Tailwind CSS,这是一个预安装的实用CSS框架。你仍然可以从package.json
依赖中移除它,并按你的喜好编辑CSS样式。
CSS 文件默认使用 POSTCSS 处理。
表单
可以通过这种方式处理自定义表单
在你的page.php
$validator = $core->validation->make(
$core->request->input(),
[
'name' => 'required',
// other rules
]
);
if ($validator->fails()) {
$errors = $validator->errors();
}
$data = [
'errors' => $errors
];
$core->render('page', $data);
在你的page.blade.php
@if (isset($errors) && $errors->any())
<div class="alert alert-danger" role="alert">
@foreach ($errors->all() as $error)
<p>{{$error}}</p>
@endforeach
</div>
@endif
<form action="{{ site_url() }}/wp-admin/admin-post.php" method="post">
<?php wp_nonce_field('contact_form') ?>
<input type="hidden" name="action" value="contact_form">
<input type="text" name="name" placeholder="Your Name">
<input type="submit" value="Submit">
</form>
在app/ContactForm/php
<?php
namespace App;
class ContactForm
{
public function __construct()
{
add_action('admin_post_nopriv_contact_form', [$this, 'handle_contact_form']);
add_action('admin_post_contact_form', [$this, 'handle_contact_form']);
}
function handle_contact_form()
{
if (wp_verify_nonce($_POST['_wpnonce'], 'contact_form')) {
$redirect = add_query_arg('form', 'success', site_url('contact'));
wp_redirect($redirect);
}
}
}
在自定义函数部分中添加以下内容到你的functions.php
。
$contactForm = new \App\ContactForm();
验证
我们的核心支持Laravel验证。
辅助函数
以下是一个你可以在其主题的任何地方使用的附加辅助函数列表。
集合
我们添加了对Laravel集合的支持。
数组 & 字符串
你可以使用以下列出的任何数组 & 对象和字符串 Laravel辅助函数:https://laravel.net.cn/docs/5.7/helpers
输出并终止
我们还添加了对著名的dd()
("输出并终止")辅助函数的支持。此函数使用dump()输出变量,然后立即终止脚本执行(使用exit)。
自定义主题函数
所有放置在/app
文件夹下的PHP类文件都将自动加载,并在你的主题文件中可访问。使用它们作为存储自定义逻辑的方便和可测试的位置。
<?php
namespace App;
class Custom
{
public function get_articles()
{
return [
'article' => 'foo',
'title' => 'bar'
];
}
}
?>
## Usage
$custom = new \App\Custom();
$articles = $custom->get_articles();
经典编辑器
Classic Editor插件包含在Composer依赖中。使用以下命令将其下载并安装到你的Wordpress默认插件文件夹中。
你仍需要在插件页面上手动激活该插件。
composer install
Gutenberg ACF块
本启动主题支持ACF块,以便轻松创建Gutenberg块。请阅读ACF块文档以了解如何进行操作。在此主题中,块在inc/acf-blocks.php
文件中注册。块的视图从/resources/views/blocks
文件夹渲染。
块视图不支持Laravel Blade语法。需要使用常规PHP。
更干净的WordPress
我们包含了一些类,以提供默认情况下更干净的WordPress版本。
你可以通过将主题文件夹根目录下的.env.example
配置文件复制到.env
并使用以下选项自定义其内容来启用或禁用其中任何一个
选项 | 默认 | 描述 |
---|---|---|
DISABLE_COMMENTS | 是 | 禁用所有注释功能 |
DISABLE_EMOJIS | 是 | 禁用表情脚本 |
DISABLE_GENERATOR | 是 | 删除生成器元标签 |
DISABLE_GUTENBERG_BLOCK | 是 | 删除块库脚本 |
DISABLE_OEMBED | 是 | 禁用oEmbed脚本 |
HIDE_FRONTEND_TOOLBAR | 是 | 在前端隐藏管理员工具栏,并在“配置文件选项”页面隐藏选项。 |
HIDE_FRONTPAGE_ADMIN_ATTRS | 是 | 在编辑首页时,在管理员中隐藏页面属性。 |
ADD_SLUG_BODY_CLASS | 是 | 将当前别名添加到身体类列表中。 |