dievardump/wp-bladeone-plugin

插件,在WordPress主题中启用Blade(One)语法

安装次数: 64

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 2

开放问题: 2

类型:wordpress-plugin

dev-master 2020-07-15 15:03 UTC

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的模板层次结构开始的。