josantonius/wp-menu

此包已被废弃且不再维护。未建议替代包。

在WordPress中添加菜单或子菜单页面。

1.0.7 2018-02-25 18:13 UTC

This package is not auto-updated.

Last update: 2022-08-20 15:34:15 UTC


README

Latest Stable Version License

西班牙语版本

在WordPress中添加菜单或子菜单页面。

需求

此库支持PHP版本5.6或更高版本,并兼容HHVM版本3.0或更高版本。

安装

安装此扩展的首选方式是通过Composer

要安装WP_Menu库,只需

composer require josantonius/wp-menu

前面的命令只会安装必要的文件,如果您想下载整个源代码,可以使用

composer require josantonius/wp-menu --prefer-source

您还可以使用Git 克隆完整仓库

git clone https://github.com/josantonius/wp-menu.git

或者 手动安装

下载WP_Menu.php:

wget https://raw.githubusercontent.com/josantonius/wp-menu/master/src/class-wp-menu.php

可用方法

此库中的可用方法

- 添加WordPress菜单/子菜单

WP_Menu::add($type, $data, $function, $styles, $scripts);
属性 描述 类型 必需 默认
$type 'menu' 或 'submenu' 字符串
属性 key 描述 类型 必需 默认
$data 设置 数组
name 菜单/子菜单名称 字符串
slug 菜单/子菜单别名 字符串
title 菜单/子菜单标题 字符串 $data['name']
capability 所需权限 字符串 'manage_options'
icon_url 仅对菜单 - 用于此菜单的图标URL。通过数据URI传递base64编码的SVG,它将匹配颜色方案进行着色。它应该以'data:image/svg+xml;base64,'开始。传递Dashicons辅助类的名称以使用字体图标,例如'dashicons-chart-pie'。传递'none'以留空div.wp-menu-image,以便可以通过CSS添加图标。 字符串 ''
position 仅对菜单 - 此菜单在菜单顺序中的位置。 整数 null
parent 仅对子菜单 - 父菜单的别名 字符串
属性 描述 类型 必需 默认
$function 要调用的函数以输出 可调用 false
属性 描述 类型 必需 默认
$styles 要调用的函数以加载页面样式 可调用 false
属性 描述 类型 必需 默认
$scripts 要调用的函数以加载页面脚本 可调用 false

返回 (布尔值)

快速入门

要使用此库与 Composer

require __DIR__ . '/vendor/autoload.php';

use Josantonius\WP_Menu;

如果您已手动安装,使用它

require_once __DIR__ . '/class-wp-menu.php';

use Josantonius\WP_Menu\WP_Menu;

用法

- 设置菜单参数

$params = [
    'slug'       => 'searchinside-options',
    'name'       => __('Search Inside', 'search-iniside'),
    'title'      => __('Search Inside', 'search-iniside'),
    'capability' => 'manage_options',
    'icon_url'   => '//searchinside-menu-admin.png',
    'position'   => 25,
];

- 添加菜单

添加不带相关方法的菜单。

WP_Menu::add(
    'menu', 
    $params
);

添加带输出相关方法的菜单。

WP_Menu::add(
    'menu', 
    $params,
    [$this, 'run_page']
);

添加带输出和样式相关方法的菜单。

WP_Menu::add(
    'menu', 
    $params,
    [$instance1, 'run_page'], 
    [$instance3, 'load_styles']
);

添加带输出、样式和脚本相关方法的菜单。

WP_Menu::add(
    'menu', 
    $params,
    [$instance1, 'run_page'], 
    [$instance3, 'load_styles'],
    [$instance3, 'load_scripts']
);

添加带输出和脚本相关方法的菜单。

WP_Menu::add(
    'menu', 
    $params,
    [$instance1, 'run_page'], 
    false,
    [$instance3, 'load_scripts']
);

- 设置子菜单参数

$params = [
    'slug'       => 'searchinside-options',
    'parent'     => 'searchinside-options',
    'name'       => __('Options', 'search-iniside'),
    'title'      => __('Options', 'search-iniside'),
    'capability' => 'manage_options',
];

- 添加子菜单

不关联方法添加子菜单

WP_Menu::add(
    'submenu', 
    $params
);

关联输出方法添加子菜单

WP_Menu::add(
    'submenu',
    $params, 
    [$this, 'run_page']
);

关联输出和样式方法添加子菜单

WP_Menu::add(
    'submenu', 
    $params, 
    [$instance1, 'run_page'], 
    [$instance3, 'load_styles']
);

关联输出、样式和脚本方法添加子菜单

WP_Menu::add(
    'submenu', 
    $params, 
    [$instance1, 'run_page'], 
    [$instance3, 'load_styles'],
    [$instance3, 'load_scripts']
);

关联输出和脚本方法添加子菜单

WP_Menu::add(
    'submenu', 
    $params, 
    [$instance1, 'run_page'], 
    false,
    [$instance3, 'load_scripts']
);

- 高级示例

class Sample_Class {

    public function __construct() {

        add_action( 'wp_menu_pre_add_menu_page', [ $this, 'before_add_menu' ] );
        add_action( 'wp_menu_after_add_menu_page', [ $this, 'after_add_menu' ] );
        add_action( 'wp_menu_pre_add_submenu_page', [ $this, 'before_add_submenu' ] );
        add_action( 'wp_menu_after_add_submenu_page', [ $this, 'after_add_submenu' ] );
    }

    public function run_page() {

        echo 'Response from run_page method';
    }

    public function add_styles() {

        echo 'Response from add_styles method';
    }

    public function add_scripts() {

        echo 'Response from add_scripts method';
    }

    public function before_add_menu() {

        echo 'Response from wp_menu_pre_add_menu_page action';
    }

    public function after_add_menu( $hook_suffix ) {

        echo 'Response from wp_menu_after_add_menu_page action';
        echo 'Hook suffix: ' . $hook_suffix;
    }

    public function before_add_submenu() {

        echo 'Response from wp_menu_pre_add_submenu_page action';
    }

    public function after_add_submenu( $hook_suffix ) {

        echo 'Response from wp_menu_after_add_submenu_page action';
        echo 'Hook suffix: ' . $hook_suffix;
    }
}

$sample_class = new Sample_Class();

/**
 * Add menu
 */
$params = [
    'slug'       => 'plugin-options',
    'name'       => __( 'Plugin Name', 'plugin-slug' ),
    'title'      => __( 'Plugin Title', 'plugin-slug' ),
    'capability' => 'manage_options',
    'icon_url'   => '//searchinside-menu-admin.png',
    'position'   => 25,
];

WP_Menu::add(
    'menu',
    $params,
    [ $sample_class, 'run_page' ],
    [ $sample_class, 'add_styles' ],
    [ $sample_class, 'add_scripts' ]
);

/**
 * Add submenu
 */
$params = [
    'slug'       => 'sub-plugin-options',
    'parent'     => 'plugin-options',
    'name'       => __( 'Plugin Name', 'plugin-slug' ),
    'title'      => __( 'Plugin Title', 'plugin-slug' ),
    'capability' => 'manage_options',
];

WP_Menu::add(
    'submenu',
    $params,
    [ $sample_class, 'run_page' ],
    [ $sample_class, 'add_styles' ],
    [ $sample_class, 'add_scripts' ]
);

# When do_action('admin_menu');

    // Response from wp_menu_pre_add_menu_page action
    // Response from wp_menu_pre_add_submenu_page action
    
    // Response from wp_menu_after_add_menu_page action
    // Response from wp_menu_after_add_submenu_page action
    
    // Hook suffix: load-toplevel_page_plugin-options
    // Hook suffix: plugin-name_page_sub-plugin-options
    
# When do_action('toplevel_page_plugin-options');
    
    // Executed only if access the page associated with this menu.

        // Response from run_page method
    
# When do_action('plugin-name_page_sub-plugin-options');
    
    // Executed only if access the page associated with this submenu.

        // Response from run_page method

# When do_action('load-toplevel_page_plugin-options');
    
    // Executed only if access the page associated with this menu.

        // Response from add_styles method
        // Response from add_scripts method
    
# When do_action('load-plugin-name_page_sub-plugin-options');
    
    // Executed only if access the page associated with this submenu.

        // Response from add_styles method
        // Response from add_scripts method

动作钩子

动作 描述 参数
wp_menu_pre_add_menu_page 添加菜单前。
wp_menu_after_add_menu_page 添加菜单后。 $page 结果页面的 hook_suffix,或 false。
wp_menu_pre_add_submenu_page 添加子菜单前。
wp_menu_after_add_submenu_page 添加子菜单后。 $page 结果页面的 hook_suffix,或 false。

测试

要运行 测试,您只需要 composer 并执行以下命令

git clone https://github.com/josantonius/wp-menu.git

cd WP_Menu

bash bin/install-wp-tests.sh wordpress_test root '' localhost latest

composer install

使用 PHPUnit 运行单元测试

composer phpunit

使用 WordPress 代码标准测试 PHPCS

composer phpcs

运行 PHP Mess Detector 测试以检测代码风格的不一致性

composer phpmd

运行所有之前的测试

composer tests

赞助

如果这个项目帮助您减少了开发时间,您可以赞助我以支持我的开源工作 😊

许可证

此存储库受 MIT 许可证 许可。

版权所有 © 2017-2022, Josantonius