为登录用户禁用受密码保护的页面

时间:2017-05-24 作者:Samuel

是否可以在函数上添加挂钩。php用于禁用后端用户(登录用户)的密码保护页面?

我使用beaver builder,当我修改页面或帖子时,我需要始终在访问生成器之前输入页面的密码。

谢谢

1 个回复
最合适的回答,由SO网友:birgire 整理而成

Disable the post password protection for (some) users

您可以尝试post_password_required 筛选(4.7+)以覆盖登录用户的筛选:

add_filter( \'post_password_required\', function( $returned, $post )
{
    // Override it for logged in users:
    if( $returned && is_user_logged_in() )
        $returned = false;

    return $returned;
}, 10, 2 );
或者为具有给定功能的用户禁用它(例如,manage\\u options):

add_filter( \'post_password_required\', function( $returned, $post )
{
    // Override it for users with the \'manage_options\' capability
    if( $returned && current_user_can( \'manage_options\' ) )
        $returned = false;

    return $returned;
}, 10, 2 );
我们可以针对给定的职位类型:

add_filter( \'post_password_required\', function( $returned, $post )
{
    // Target protected posts only
    if( ! $returned )
        return $returned;

    // Target logged in users only
    if( ! is_user_logged_in() )
        return $returned;

    // Target \'page\' post type only
   if( \'page\' !== get_post_type( $post ) )
        return $returned;

   // Override 
   return false;

}, 10, 2 );

Remove \'Protected\' text from protected post titles

要从标题中删除前置的受保护标题,我们可以调整登录用户的受保护标题格式,使用protected_title_format 过滤器:

add_filter( \'protected_title_format\', function( $format, $post )
{
    if( is_user_logged_in() )
        $format = \'%s\';

    return $format;
}, 10, 2 );

结束

相关推荐

Create fixed static pages

我在一个主题中有两个重要的静态页面。一个是确认页面(注册新闻稿后),另一个是感谢页面。我在各种功能中使用这些功能,并在主题安装时使用预定义内容创建它们。问题是一些用户倾向于更改slug或页面标题。我目前正在使用get\\u page\\u by\\u title,但一旦标题更改,则无法使用。我有一个退路,用户可以在选项面板中定义哪一个是他的确认页面,但我真的不喜欢这个解决方案。另一个问题是,一旦标题更改,我的页面模板(例如page confirm.php)也不会自动应用,因此用户也必须选择它。Is it