如何将在cron作业期间发生的事情通知管理员

时间:2017-03-07 作者:Sorcy

我们公司推出了一个使用我们的内容api的Wordpress插件。问题是,一些内容消失了。有时是一段时间,有时是永远。为了法律上的安全起见,我们必须强制要求在我们的页面上删除的内容也必须在插件用户端删除。

我们每月检查一次cron作业,然后将导入的内容设置为“草稿”,这样网站所有者就不会丢失他自己可能添加的任何内容。

他可以重新发布内容,但如果有法律问题,那就是他的问题。

无论如何:我如何最好地通知页面所有者我们将他的一些页面设置为“草稿”?我查看了管理员通知,但这些通知似乎主要是针对诸如“您的设置已保存”之类的短消息和即时消息。

告诉网站所有者“好吧,这是在你离开时发生的,你可能需要调查一下”的好方法是什么?

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

我也做过类似的标记内容摄取问题。我要提醒大家,不要从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

        这种方法对我们很有效,但要注意,如果您摄取了大量数据,内容标志会很快堆积起来。如果看到管理员没有解决问题,则需要为旧标志运行垃圾收集脚本。如果内容标志一直被忽略,您可能还需要确定规则过于严格的模式,以便添加内容标志。

相关推荐

安装SSL后无法访问wp-admin-未设置用户功能

编辑:原来解决方案是简单地重新安装wordpress(无论如何,这是一个新的博客)。仍然不确定问题到底是什么,但这解决了问题。我尝试了stackexchange和其他网站上的每一个补丁,但都没有解决问题。我已经检查了wp\\u1是否在我所有的桌子前面。我已经将数据库中的http://to https://everywhere更新了。我已经尝试过使用/不使用$\\u服务器[\'HTTPS\']=“on”等的FORCE\\u SSL\\u ADMIN方法。我目前在我的wp配置中有这个。php。我试着把它放在顶