morningtrain / wp-view
Laravel 视图和 Blade for WordPress
Requires
- illuminate/view: ^8.83|^9.5
- morningtrain/php-loader: ^0.3.3
README
Laravel blade 和 view for WordPress with custom directives.
目录
介绍
入门
要开始,请按照以下安装中描述的步骤安装包。
要使用此工具,请参阅使用方法
安装
使用 composer 安装
composer require morningtrain/wp-view
依赖项
illuminate/view
morningtrain/php-loader
PHP Loader 用于加载和初始化所有钩子
使用方法
有关概述,请参阅官方 Laravel 文档
视图目录
设置视图的主目录
\Morningtrain\WP\View\View::setup(__DIR__ . "/resources/views");
渲染视图
echo \Morningtrain\WP\View\View::render('person',['name' => 'John','email' => 'john@doe.com']);
使用命名空间
您可以为一系列视图注册一个命名空间。当编写插件时,这特别有用,因为您可以将所有插件视图分组,而不必担心名称冲突。在主命名空间中,可以使用 first()
而不是 render()
来覆盖命名空间中的视图。
例如:View::first(['vendor/myPlugin/myview','myPlugin::myview])
将首先从 vendor 目录中渲染视图(如果存在),因此允许主题作者在必要时覆盖此视图。
注册命名空间
echo \Morningtrain\WP\View\View::addNamespace('myPlugin', __DIR__ . "/resources/views");
使用命名空间
echo \Morningtrain\WP\View\View::render('myPlugin::person',['name' => 'John','email' => 'john@doe.com']);
自定义 @directives
此包包含一些自定义的 blade 指令,您可以使用它们。
@wpauth()
<div> @wpauth() Hello @username! @else <a>Login</a> @endwpauth </div>
@header()
与以下相同: https://developer.wordpress.org/reference/functions/get_header/
以下将渲染 header.blade.php
视图或 header-small.blade.php
@header() @header('small')
@footer()
与以下相同: https://developer.wordpress.org/reference/functions/get_footer/
以下将渲染 footer.blade.php
视图或 footer-dark.blade.php
@footer() @footer('dark')
@script()
一种简单的方式来注册已注册的脚本。
使用此指令与调用 wp_enqueue_script()
并仅传递处理程序相同。
@script('swiper') <section id="my-cool-slider"> ... </section>
@style()
一种简单的方式来注册已注册的样式表。
使用此指令与调用 wp_enqueue_style()
并仅传递处理程序相同。
@style('employees') <section id="employees" class="employees list"> ... </section>
@username()
打印当前登录用户的用户名或空字符串(如果未登录)。
@cache()
在瞬态中缓存内容,并使用存在的缓存数据
<div> <h3>Cache test for post: {!! $postId !!}</h3> @if(!empty($postId)) @cache("post_card_{$postId}") <aside @class(['post-card', "post-card__".get_post_type($postId)])> <h3>{!! get_the_title($postId) !!}</h3> <p>{{ get_the_excerpt($postId) }}</p> <span>Yes</span> <a href="{!! get_permalink($postId) !!}">{{__('Read more','domain')}}</a> </aside> @endcache @else <p>{{__('This is not a post','domain')}}</p> @endif </div>
@react()
打印一个与 Morningtrain ReactRenderer 兼容的元素,带有可选的 props。这使得为客户端处理准备组件变得容易。
@react('myComponent', [ 'someData' => 'someValue' ])
@react 指令还支持一个子视图,该视图将在组件包装器内部渲染,直到渲染 React 组件。这对于骨架和避免弹窗非常有用。
@react('myComponent', [ 'someData' => 'someValue' ], 'my-skeleton-view'), ['skeletonProp' => 'skeletonValue']
致谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅许可文件。