alleyinteractive / wp-experimental-features
WP 实验性功能
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-15 20:48:14 UTC
README
这是一个WordPress插件,用于在您的主题或插件中创建功能标志系统,以进行beta测试实验性功能。
用法
定义功能标志
功能标志通过过滤器进行定义
/** * Define available feature flags. * * @param array $flags Feature flags that have been defined for the Experimental Features plugin. * * @return array The modified list of feature flags. */ function filter_experimental_features_flags( $flags ): array { $flags['my-cool-feature'] = __( 'My Cool Feature', 'my-textdomain' ); return $flags; } add_filter( 'experimental_features_flags', __NAMESPACE__ . '\filter_experimental_features_flags' );
检查功能标志的值
可以通过运行特征标志别名通过 experimental_features_flag
过滤器来检查功能标志的值。这允许插件和主题在实验性功能插件停用时不会中断,因为过滤器将简单地返回默认值。
$is_enabled = apply_filters( 'experimental_features_flag', false, 'my-cool-feature' );
如果标志未启用,或者实验性功能插件未激活,则将返回默认值(第一个参数,在上面的示例中为 false
)。
您可以在插件或主题中创建一个辅助函数来完成此操作
/** * A helper function for determining if a feature flag is enabled. * * @param string $slug The feature flag slug to check. * * @return bool True if enabled, false if not. */ function my_theme_flag_enabled( string $slug ): bool { return (bool) apply_filters( 'experimental_features_flag', false, $slug ); }
在管理员界面切换功能标志
如果您以管理员(或具有 manage_options
能力的用户)的身份登录到WordPress管理员界面,导航到设置 > 实验性功能,您可以通过简单的复选框界面打开和关闭功能标志。
在管理员栏切换功能标志
默认情况下,管理员栏将包括切换所有可用功能标志的链接。这可以通过过滤器关闭
add_action( 'experimental_features_show_admin_bar', '__return_false' )
监听标志更改
当标志启用/禁用时,将触发WordPress操作。
在任何标志更新时
add_action( 'experimental_features_flags_updated', function( $enabled, $disabled ) { // ... }, 10, 2, );
当特定标志启用时
add_action( 'experimental_features_flag_enabled_{feature-flag}', function() { ... } );
当特定标志禁用时
add_action( 'experimental_features_flag_disabled_{feature-flag}', function() { ... } );
在REST API中检索功能标志状态。
可以通过REST API检索功能标志的状态。端点 /wp-json/experimental-features/v1/features
将返回一个包含网站上所有功能标志状态的JSON对象。
{ "my-cool-feature": { "label": "My Cool Feature", "status": false } }
默认情况下,这是禁用的。要启用它,请使用以下过滤器
add_filter( 'experimental_features_rest_api_enabled', '__return_true' );
访问REST API端点的默认权限为所有用户。要限制访问,您可以通过过滤权限回调来检索以满足您的需求
add_filter( 'experimental_features_rest_permission_callback', function () { return current_user_can( 'manage_options' ); }, );
默认情况下,所有功能标志都会出现在端点上。这可以通过使用 experimental_features_rest_api_flags
过滤器来过滤
add_filter( 'experimental_features_rest_api_flags', function ( $flags ) { return array_filter( $flags, function ( $flag ) { // Only return the 'my-cool-feature' flag. return 'my-cool-feature' === $flag; }, ARRAY_FILTER_USE_KEY ); } );
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
鸣谢
此项目由 Alley Interactive 活跃维护。
许可协议
GNU通用公共许可证(GPL)。请参阅 许可文件 了解更多信息。