詹姆斯威廉姆斯 / flagpole
轻松注册和使用主题中的功能标志。
Requires
- composer/installers: ~1.0
Requires (Dev)
This package is auto-updated.
Last update: 2022-09-12 15:52:57 UTC
README
此插件适用于希望在其主题中添加简单功能标志的WordPress主题开发者。这些标志可以通过管理员界面启用,按每个用户或组预览,甚至可以通过查询字符串为无账户的用户启用。有关计划中的开发工作,请参阅路线图或带有增强标签的问题。
内容
安装
将此项目的源代码添加到您的 wp-content/plugins
目录,并像启用任何其他插件一样启用它。它还通过Packagist提供,可用于与composer一起使用。
composer require jamesrwilliams/flagpole
目前此插件不通过WordPress插件目录提供,但我们正在努力在v1.0.0中实现这一点。
所需的主题更改
由于此插件与您的主题代码紧密耦合,因此建议您添加以下块到您的主题中,以便在旗杆插件因任何原因被禁用时捕获任何错误。
if ( ! function_exists( 'flagpole_flag_enabled' ) ) { function flagpole_flag_enabled() { return false; } }
注册一个标志
要注册一个标志,只需将以下内容添加到您的主题的 functions.php
文件中,使用 flagpole_register_flag
函数即可
if ( function_exists( 'flagpole_register_flag' ) ) { flagpole_register_flag([ 'title' => 'My awesome new feature', 'key' => 'correct-horse-battery-staple', 'enforced' => false, 'label' => 'All', 'description' => 'An example feature definition', 'stable' => false, ]); }
使用 function_exists
将注册函数调用包裹起来可以帮助避免在插件因任何原因被禁用时出现错误。您还可以向 flagpole_register_flag
传递一个标志数组,以轻松一次性实例化多个标志。
检查标志的状态
然后您可以在模板中,使用PHP主题代码中的 flagpole_flag_enabled
函数检查功能状态,并根据标志的状态切换功能
if ( flagpole_flag_enabled( 'flag_key' ) ) { /* flag_key is enabled! */ }
将 flag_key
替换为在 flagpole_register_flag
函数中使用的键,以检查它是否已启用。
标志选项/参数
参数 | 类型 | 默认 | 描述 |
---|---|---|---|
key | 字符串 |
- | 在模板中用于检查功能是否启用的唯一键。 |
title | 字符串 |
"" | 可读性强的功能名称。 |
description (可选) | 字符串 |
"" | 在管理员屏幕中显示的描述。 |
stable (可选) | 布尔值 |
false |
如果 true ,则允许用户从管理员区域发布功能。 |
enforced (可选) | 布尔值 |
false |
将此设置为 true 将覆盖任何特定用户设置,并将强制标志对每个用户都启用。这在从代码库中删除标志之前部署标志很有用。 |
标签 | 字符串 |
所有 |
使用标签可以将相似的标志分组在一起。添加标签将在管理界面中将标志分离。 |
启用标志
Flagpole 有三种方法启用标志。这些是
预览
通过在 Flagpole 管理屏幕中启用预览,可以为当前登录用户预览标志。
导航到 WP 管理仪表板中的 Flagpole 屏幕,位于工具 > Flagpole。找到您想启用的标志,并点击“启用预览”按钮。
现在,此标志将为该用户启用,直到再次切换。用户可以同时预览任意数量的标志。要同时预览多个标志,请参阅标志组。
发布
发布标志将使其对访问您网站的每个用户都启用,包括未登录的用户。只要将标志注册块中的 stable
属性设置为 true
,任何用户都可以发布功能,这可以作为安全网,让主题开发者标记功能已准备好发布。
例如。
flagpole_register_flag([ 'title' => 'Feature ready for publication', 'key' => 'super-awesome-navigation-change', 'stable' => true, ]);
强制
强制标志是开发者可以强制标志处于发布状态的地方。这允许他们通过将标志选项中的 'enforced' 选项设置为 true
来通过源代码启用标志。强制标志背后的想法是在从主题中删除标志逻辑之前的垫脚石。强制标志在管理区域中显示为单独的列表,并且对管理区域中的用户不交互。
flagpole_register_flag([ 'title' => 'An enforced flag', 'key' => 'enforced-flag', 'enforced' => true, ]);
标志组
标志组是同时管理多个标志的方法。您可以像单个标志一样预览标志组,并使用 group
URL 参数以及您想启用的组密钥。一个 private
组将要求用户在激活标志之前登录到网站上。
您可以通过在 WP 管理中启用它来预览标志组,就像为单个标志那样,或者您可以使用查询字符串方法来使用以下查询字符串格式启用一组标志:?group={groupKey}
示例
https://www.example.com?group=battery-horse-staple
短代码
此插件添加了多个实用短代码,以帮助调试 Flagpole 标志的使用。
debugFlagpole_flags
默认情况下,该短代码显示在您主题中找到的所有未强制执行的标志。您还可以使用标志参数指定要调试的特定标志,如下所示,使用单个密钥或逗号分隔的列表
基本用法
// Single Key echo do_shortcode('[debugFlagpole_flags]');
此部分将显示活动主题中所有当前未启用的标志的表格,包括状态以及如果它们被启用,原因。
如果您不想显示所有内容,可以指定单个或多个标志。
// Multiple keys echo do_shortcode('[debugFlagpole_flags flag="key-1,key-2,key-3"]');
传递enforced
值将显示所有enforced
标志而不是其他标志。例如
echo do_shortcode('[debugFlagpole_flags enforced="true"]');
debugFlagpole_groups
使用以下短代码来获取标志组的调试输出。
echo do_shortcode('[debugFlagpole_groups]');
debugFlagpole_db
使用以下短代码来获取所有内容的调试输出!
echo do_shortcode('[debugFlagpole_db]');
贡献
任何PR和建议都非常受欢迎,包括对问题的想法和讨论。