正如iLocin所提到的,一些需求将需要额外的定制。
我可以创建多个密码来访问该页面
您将创建用户帐户。没有用户,密码就不存在。
可以为每个密码设置过期日期
这在wordpress中没有实现,需要做的工作最多。您可能会在usermeta中存储一个日期,并在每次登录时进行检查,并在重置密码时进行更新。看看这些功能:
https://codex.wordpress.org/Function_Reference/update_user_metahttps://codex.wordpress.org/Function_Reference/get_user_meta
登录的管理员会自动通过身份验证/授权以查看页面
有几种方法可以实现这一点。您肯定想创建一个新角色,并且可以为角色有权访问的给定页面集使用页面模板。
我建议不要授予管理权限,因为这些权限允许人们对站点本身进行更改(除非这是您的意图),而是分配自定义Role.
创建角色的示例代码。为角色名称定义一个常量,以便可以从tamplate引用它。通过这种方式,您还可以控制与其他访问相关的特定权限:
define(\'SOME_ROLE\', \'somerole\');
define(\'ADMINISTRATOR_ROLE\', \'administrator\');
add_role(SOME_ROLE, __( \'Some Role\', \'textdomain\' ), array(
\'read\' => true,
\'edit_posts\' => false,
\'delete_posts\' => false
) );
您可以使用此功能检查用户是否具有给定角色:
public static function current_user_has_role($role) {
$user = wp_get_current_user();
if(in_array($role, (array) $user->roles )) {
return true;
}
return false;
}
您可以将以下代码添加到模板php的顶部。这将检查用户是否具有该角色或任何其他具有管理权限的角色。同样,可能还有其他方法可以使用过滤器等来实现这一点,但这将起作用。
// Check access
if( !is_user_logged_in() ||
!(current_user_has_role(SOME_ROLE) ||
current_user_has_role(ADMINISTRATOR_ROLE))) {
wp_redirect(wp_login_url());
exit;
}
根据查看页面的用户是否经过身份验证/授权,显示不同的内容(例如,如果未登录,则显示包含修改内容+密码字段的页面;如果登录,则显示所有内容)
您可以将上面的wp\\u重定向调用更改为其他url或添加其他逻辑。