morningtrain/wp-view

Laravel 视图和 Blade for WordPress

v0.4.3 2023-03-30 14:54 UTC

This package is auto-updated.

Last update: 2024-08-30 01:12:13 UTC


README

Laravel blade 和 view for WordPress with custom directives.

目录

介绍

入门

要开始,请按照以下安装中描述的步骤安装包。

要使用此工具,请参阅使用方法

安装

使用 composer 安装

composer require morningtrain/wp-view

依赖项

illuminate/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)。有关更多信息,请参阅许可文件