在激活/停用时发送带有活动插件列表的电子邮件

时间:2019-02-07 作者:razorfrog

我正在使用Airtable为多个WP站点保存一个插件的实时列表,并且在激活或删除插件时,Zapier通过电子邮件发送新的插件数据几乎可以正常工作。

该电子邮件在插件激活时是正确的,但在停用后,最近停用的插件仍包含在列表中。插件列表是否以某种方式被缓存?

几乎正常工作的代码:

////////////////////////////////////////////////////////////    
// send an email on plugin activate / deactivate 
////////////////////////////////////////////////////////////    

function urlToDomain($url) {
   return implode(array_slice(explode(\'/\', preg_replace(\'/https?:\\/\\/(www\\.)?/\', \'\', $url)), 0, 1));
}

function detect_plugin_change( $plugin, $network_activation ) {

    $url = urlToDomain(site_url());

    $the_plugs = get_option(\'active_plugins\'); 
    sort ( $the_plugs );
    foreach($the_plugs as $key => $value) {
        $string = explode(\'/\',$value);
        $plugins .= $string[0] .", ";
    }

    $to = [email address removed];
    $subject = $url;
    $body = $plugins;
    $headers = array(\'Content-Type: text/html; charset=UTF-8\');

    wp_mail( $to, $subject, $body, $headers );

}
add_action( \'activated_plugin\', \'detect_plugin_change\', 10, 2 );
add_action( \'deactivated_plugin\', \'detect_plugin_change\', 10, 2 );
这会发送如下电子邮件:

To: [电子邮件地址已删除]

Subject: sitename。com公司

Body: 管理菜单编辑器、显示帖子短代码、重力表单、列表页面短代码、插件中心、简单历史、分类列表短代码、用户切换、wordpress seo、wp scss

有什么想法需要编辑,以便在插件停用时正常工作?非常感谢。

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

如果你看here 在里面/wp-admin/includes/plugin.php

        do_action( \'deactivated_plugin\', $plugin, $network_deactivating );
    }
}

if ( $do_blog )
    update_option(\'active_plugins\', $current);
if ( $do_network )
    update_site_option( \'active_sitewide_plugins\', $network_current );
直到钩子触发后,选项才会更新。

您可以通过使用第一个参数deactivated_plugin:

function detect_plugin_change( $plugin, $network_activation ) {

    $url = urlToDomain(site_url());

    $the_plugs = get_option(\'active_plugins\'); 
    sort ( $the_plugs );
    foreach($the_plugs as $value) {
        // Skip the deactivated plugin.
        if ( $plugin === $value ) {
            continue;
        }

        $string = explode(\'/\',$value);
        $plugins .= $string[0] .", ";
    }

    $to = [email address removed];
    $subject = $url;
    $body = $plugins;
    $headers = array(\'Content-Type: text/html; charset=UTF-8\');

    wp_mail( $to, $subject, $body, $headers );

}
<编辑:如果需要,您还可以使用get_plugin_data.

相关推荐

解决方法:PHP语法错误,1104行的load.php中出现意外的T_STRING(安装时)

我收到了错误:PHP分析错误:语法错误,在/web/www/html/xxx/wordpress/wp includes/load中出现意外的T\\u字符串。php在线1104正在尝试在linux服务器上安装wordpress。在谷歌上搜索这个问题,我发现这个错误取决于旧版本的PHP,并且在PHP版本5.6(至少)中得到了解决。例如,请参见this support issue.我的问题是:有一种解决方法可以在不更新PHP的情况下解决这个问题?(我不控制服务器)PHP的当前版本是4.4.8。非常感谢。