wordpress 多用户,怎样加密/或屏蔽/或 404 某个“作者”的所有文章,且后期可恢复

2020-08-15 16:55:52 +08:00
 masy
要求就是暂时让某个用户“作者”的所有文章批处理为对外不可访问,且后期可以随时恢复。

我的思路是管理员后台批量编辑某个用户的文章,状态从“已发布”改为“等待复审”(这里用户的权限已做了处理,不能自己恢复,不考虑使用回收站功能是因为回收站里也有一些帖子避免混到一起)
但是,后台文章列表每页显示的数目太少,某些用户有几千篇文章的话需要翻几百页进行勾选批量处理,太麻烦,只能放弃。

求助是否有其他快捷方法或插件可实现,数据库批处理操作也可以。
1813 次点击
所在节点    WordPress
5 条回复
ponote
2020-08-15 17:05:46 +08:00
方案一:
SQL 批量处理,最简单,将该用户的所有文章状态修改为待审核

方案二:
在页面请求的时候,在 WP_query 中适用 author__not_in,将该作者剔除

方案三:
后台筛选出该作者的文章,全选批量删除,切记不要清空回收站,后期可恢复
ponote
2020-08-15 17:39:22 +08:00
```
UPDATE wp_posts SET post_status='pending' WHERE post_author=1 AND post_type='post';
```
post_author 后面的 id 改成目标作者 id 即可

下次需要重新显示出来的时候:
还是上面的脚本,只是将 post_status='pending' 改成 post_status='publish' 即可,记得加上作者 id

记得修改表前缀,模式 wp_
masy
2020-08-15 18:20:19 +08:00
@ponote 谢谢。
在这期间我又想了一个方法:
在文章模板上方加一段代码不知是否可行
```
<?php
$author = $post->ID;
//禁止显示 id 为 5,6,7 的文章;
if ($author == '5' or $author == '6' or $author == '7'){
header('Location:404.php');
die;}
?>
```
masy
2020-08-15 18:40:58 +08:00
@masy
这里应该是
$author = get_post($id)->post_author;
falcon05
2020-08-15 18:55:08 +08:00
加个钩子函数
add_action('pre_get_posts', function($query){
if(!is_admin()){
$query->set('author__not_in', array( 用户 ID1, 用户 ID2));
}
});

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/698483

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX