josantonius / wp-menu
此包已被废弃且不再维护。未建议替代包。
在WordPress中添加菜单或子菜单页面。
1.0.7
2018-02-25 18:13 UTC
Requires
- php: ^5.6 || ^7.0
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^0.4.3
- friendsofphp/php-cs-fixer: ^2.3 || ^2.8
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^5.7 || ^6.0
- squizlabs/php_codesniffer: ^3.2.2
- wp-coding-standards/wpcs: ^0.14
This package is not auto-updated.
Last update: 2022-08-20 15:34:15 UTC
README
在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
或者 手动安装
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。 |
测试
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
composer phpcs
运行 PHP Mess Detector 测试以检测代码风格的不一致性
composer phpmd
运行所有之前的测试
composer tests
赞助
如果这个项目帮助您减少了开发时间,您可以赞助我以支持我的开源工作 😊
许可证
此存储库受 MIT 许可证 许可。
版权所有 © 2017-2022, Josantonius