amphibee/menu-item-type-maker

用于Menu Item Types插件(https://fr.wordpress.org/plugins/menu-item-types)的包装器

1.1 2022-11-24 14:24 UTC

This package is auto-updated.

Last update: 2024-09-19 11:26:15 UTC


README

使用面向对象的PHP注册菜单项类型。

Menu Item Type Maker提供了一个面向对象的API,用于将菜单项类型注册到Menu Item Types插件

安装

使用Composer,在项目根目录下要求此包。

composer require amphibee/menu-item-type-maker

下载Menu Item Types插件并将其放置在pluginsmu-plugins目录中。访问WordPress仪表板并激活插件。

注册菜单项类型

方法方式

使用MenuItemType::make()函数注册新的菜单项类型。下面你可以找到一个菜单项注册的例子。目前,此包装器支持经典PHP、twig和blade视图。

默认ACF插件和WordPress经典模板

use AmphiBee\MenuItemTypeMaker\Facades\MenuItemType;

MenuItemType::make('Card', 'card')
            ->setIcon('path/to/my/icon.svg')
            ->setView('parts/nav/item-types/card.php')
            ->setFieldGroup('path/to/acf/field-group.php');

使用Extended ACF和Blade视图

use AmphiBee\MenuItemTypeMaker\Facades\MenuItemType;
use Extended\ACF\Fields\Image;
use Extended\ACF\Fields\Text;

MenuItemType::make('Card', 'card')
            ->setIcon('<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
        <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" />
    </svg>')
            ->setView('parts/nav/item-types/card')
            ->setFields([
                Image::make('Image'),
                Text::make('Title'),
            ]);

扩展方式

use AmphiBee\MenuItemTypeMaker\Contracts\MenuItemAbstract;
use Extended\ACF\Fields\Image;
use Extended\ACF\Fields\Text;

class CardMenuProvider extends MenuItemAbstract
{
    protected $label = 'Card';
    protected $slug = 'card';
    protected $view = 'parts/nav/item-types/card.twig';
    protected $icon = '<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
        <path stroke-linecap="round" stroke-linejoin="round" d="M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" />
    </svg>';

    protected function fields(): array
    {
        return [
            Image::make('Image'),
            Text::make('Title'),
        ];
    }
}