• 注册
  • 广告位预留

    wordpress二次开发 wordpress二次开发 关注:1 内容:10

    在 WordPress 中禁止用户删除某些文章类型中的文章

  • 查看作者
  • 打赏作者
  • 拉黑名单
    • wordpress二次开发
    • 我们用 WordPress 开发过一个订单系统,当用户在前台提交了一个订单后,订单信息保存在一个自定义文章类型中,客服可以在后台查看、处理订单。为了防止客服不小心删除这个订单信息,我们需要禁用掉这个订单的删除功能,客服只能查看,编辑、不能删除订单。我们是通过下面的代码可以实现这个需求。

      移除用户删除某个文章类型的权限

      add_filter( 'map_meta_cap', function ( $caps, $cap, $user_id, $args )

      {

          // 如果不是 delete_post 权限,什么都不做

          if( 'delete_post' !== $cap || empty( $args[0] ) ){

              return $caps;

          }

          // 如果是指定的文章类型,修改权限为 do_not_allow

          if( in_array( get_post_type( $args[0] ), [ 'messages', 'transaction' ], true ) ){

              $caps[] = 'do_not_allow';

          }

          return $caps;

      }, 10, 4 );

      移除后,文章类标的操作栏,就只剩下 “编辑” 这一个功能了,如下图:

      移除批量操作中的“移至回收站”链接

      虽然我们移除了用户删除文章类型的权限,但是文章类型列表批量编辑功能的 “移至回收站” 功能还在(如下图),如果我们选择了几篇文章,选择“移至回收站” 操作,点击应用,WordPress 会报错,告诉我们,我们没有权限删除文章。

      我们可以通过下面的代码移除这个功能:

      add_filter('bulk_actions-edit-message', function ($actions)

      {

          unset($actions[ 'trash' ]);

          return $actions;

      });

      除了禁止用户删除文章,我们还可以禁止用户进行其他操作,根据需要对相应的权限进行限制就可以了,WordPress 的权限列表请参考官方文档:WordPress 角色和权限。如果需要其他角色的用户可以删除订单,可以在上面的代码中加上权限判断,有需要的朋友自行编辑,在这里就不再列出了。

      请登录之后再进行评论

      登录
    • 实时动态
    • 偏好设置
    • 返回顶部
    • 帖子间隔 侧栏位置: