dievardump / wp-bladeone-plugin
插件,在WordPress主题中启用Blade(One)语法
Requires
- composer/installers: ^1.9
- eftec/bladeone: ^3.46
- tightenco/collect: ^7.12
This package is auto-updated.
Last update: 2024-09-16 02:11:41 UTC
README
WordPress插件,允许在模板中使用Blade语法。
为此,此插件使用BladeOne,它是Laravel的Blade的独立端口,无依赖项。
1 - 安装
您需要使用Composer,并已安装和配置composer/installers,这样Composer就知道如何在正确的WordPress目录中安装此插件。
然后您只需
composer require dievardump/wp-bladeone-plugin
并在WordPress插件面板中激活它
2 - 配置
您可以为WP BladeOne定义3个常量来配置。
WP_BLADEONE_VIEWS
BladeOne将在此处查找视图文件。如果您使用WP Blade(One) Starter Template或希望WP BladeOne与WordPress层次结构一起工作,它应该是您的主题目录。如果您只想使用wp_bladeone()->run($view_name, $data)渲染一些模板,则可以设置另一个路径。(请参阅下面的用法)默认为get_stylesheet_directory()
WP_BLADEONE_CACHE
BladeOne将在此处有权写入视图缓存文件。通常位于WP_CONTENT_DIR中,因为其他目录通常不可写。默认为WP_CONTENT_DIR . '/cache/.wp-bladeone-cache'
WP_BLADEONE_MODE
配置BladeOne如何管理视图的渲染,包括缓存。请参阅BladeOne以了解不同模式及其功能。默认为\eftec\bladeone\BladeOne::MODE_AUTO
3 - 用法
有两种方法可以在模板中使用此插件。
3.1 使用层次结构
此插件将挂钩到一些WordPress操作,当WordPress尝试渲染模板文件时,它将首先查看是否可用Blade版本。(例如:在渲染index.php之前,它将首先查看是否存在index.blade.php)。
这允许您创建完全使用Blade语法工作的完整主题(请参阅WP Blade(One) Starter Template作为示例)
3.2 使用wp_bladeone()->run($view_name, $data)
如果您不想使用层次结构挂钩,可以将WP_BLADEONE_VIEWS设置为/views(或任何其他目录)并将所有blade模板文件放在那里。
然后,在您的主题文件中,当您想使用Blade视图时,只需执行wp_bladeone()->run($view_name, $data)。
示例:文件wp-config.php
<?php // wp configuration define('WP_BLADEONE_VIEWS', __DIR__ . '/../views'); //.... ?>
在您的主题目录中
文件index.php
<?php // this will look for WP_BLADEONE_VIEWS . '/index.blade.php' // => () . '/views/index.blade.php' echo wp_bladeone()->run('index', ['className' => 'index']); ?>
在此处放置您的视图
文件views/index.blade.php
@extends('layout')
@section('title')
<h1>{{ get_the_title() }}</h1>
@endsection
@section('content')
@php the_content() @endphp
@endsection
文件views/layout.blade.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <article class="{{ $className ?? ''}}"> @section('title') <h1>Default title</h1> @show @section('content') <p>default content</p> @show </article> </body> </html>
就是这样!
4 - 它实际上是如何工作的?
当决定需要哪个模板文件来显示页面/帖子时,WordPress会通过模板层次结构进行处理,采用第一个可用的模板。像许多其他事情一样,WordPress为开发人员提供了操作,以修改此模板层次结构的核心行为,此插件仅通过优先考虑以.blade.php结尾的文件来修改行为,而不是以.php结尾的文件。
例如,假设您尝试加载一个带有slug /example/和id 10的普通页面,Wordpress将会按照以下顺序查找:
[ 'page-exemple.php', 'page-10.php', 'page.php', 'singular.php', 'index.php' ]
此插件会修改这一点,使得Wordpress会查找:
[ 'page-exemple.blade.php', 'page-exemple.php', 'page-10.blade.php', 'page-10.php', 'page.blade.php', 'page.php', 'singular.blade.php', 'singular.php', 'index.blade.php', 'index.php' ]
然后,如果第一个存在的文件以.blade.php结尾,它将通过BladeOne进行渲染。
5 - 为什么不使用roots的Sage?
我只是希望能够使用Blade的语法,别的什么都不需要。Sage带来了许多我完全没有用到的功能,因为我的技术栈与他们完全不同。
然而,我实际上正在使用此插件与Bedrock(由Sage的创造者)以及我自己的WP Blade(One) Starter Template一起使用,这个模板是从Sage的模板层次结构开始的。