我也做过类似的标记内容摄取问题。我要提醒大家,不要从cron发送电子邮件,除非它是在指定的时间间隔内以摘要形式发送的,因为你很快就会感到邮件疲劳。
我在一个单独的帖子类型中创建了一个排序队列,该类型链接到标记的帖子,或者只是为一个没有帖子的问题设置了一个标志。从那里,编辑可以解决问题(删除它)或将其标记为预期(设置为“预期”的自定义post\\U状态),以便在设置规则以捕获类似问题的其他帖子时,该问题不会重复出现。
虽然我无法为您提供专有插件的代码库,但以下是我采取的步骤:
1. Create a post type for content flags
2. Redirect new manual posts to edit.php and remove submenu item for adding posts
我们只希望cron创建这些帖子,而不是用户。
add_action( \'init\', \'redirect_new_flag_post\' );
function redirect_new_flag_post (){
global $pagenow;
if( $pagenow === \'post-new.php\' && isset( $_GET[\'post_type\'] ) && $_GET[\'post_type\'] === \'YOUR_POST_TYPE\' ){
wp_redirect( \'/wp/wp-admin/edit.php?post_type=YOUR_POST_TYPE\' );
die();
}
}
add_action( \'admin_menu\', \'remove_flag_menu_items\' );
function remove_menu_items (){
remove_submenu_page( \'edit.php?post_type=YOUR_POST_TYPE\', \'post-new.php?post_type=YOUR_POST_TYPE\' );
}
3. Create custom columns for edit.php for your custom post type. Take a look at this post for more information.
- 标记的帖子标题
- 标记的帖子URL
- 标记的日期
- 操作(标记为已解决(垃圾),白名单按预期(设置为“预期”帖子状态))-我创建了带有关联AJAX调用的按钮
4. Add meta boxes to your custom post type
标记的帖子信息日志标题URL日志类型日期标记者(哪个cron进程)消息-这可以描述日志标记原始数据(要摄取的整个对象)的原因
我通过CSS删除了所有WP post操作,只显示我的解决操作标记为已解决(删除它)
- 标记为白名单(将其设置为私有)
5. Create an admin notice on the flagged post
<检查您的帖子类型是否正确检查是否存在指向该帖子的标志如果存在,请创建一个错误管理通知,警告编辑器存在一个标志并链接回内容标志帖子以供解决使用admin_notices 挂接以输出消息6. Create Flag model class
- 添加新标志-可以从您的cron代码中调用该标志
- 解析标志(删除)
- 设置预期(将post\\U状态设置为“预期”)
- 清除预期
class Flags{
public function add( $post_id, $title, $desc, $meta_data = array(), $flagger = \'cron\' ){
// Deduplicate flag
// Insert flag
}
public function resolve( $post_id ){
// Delete post via ID
}
public function save( $post_id ){
// Set post_status to \'expected\'
}
public function clear_saved( $post_id ){
self::resolve( $post_id );
}
}
7. Flag content from your cron script
在脚本中,您可以定义一个控制结构来标识应该标记的帖子(即帖子没有正确插入,原始CMS中缺少内容等)。应该使用Flag类标记这些帖子:Flags::add(
$post_id,
\'Lorem Ipsum\',
\'This is why this post is getting flagged\',
array( \'raw_data\' => $content_object )
);
8. Create email digest
我将创建单独的cron脚本来查询最新的内容标志,并每隔一段时间向管理员发送摘要。对于管理员来说,接收到问题的链接、查看原始数据并能够手动解决问题,而不是在没有任何数据的情况下进行调试,这将是非常有价值的。9. Garbage Collection
这种方法对我们很有效,但要注意,如果您摄取了大量数据,内容标志会很快堆积起来。如果看到管理员没有解决问题,则需要为旧标志运行垃圾收集脚本。如果内容标志一直被忽略,您可能还需要确定规则过于严格的模式,以便添加内容标志。