Deactive_plugin挂钩:获取插件的名称

时间:2012-05-26 作者:pixeline

我希望每次以前激活任何插件时,都会调用我插件中的函数,返回(至少)插件的名称,或允许识别它的东西(文件名?)。

我想我可以使用动作挂钩“deactivated\\u plugin”,但我想知道从停用的插件中可以得到什么信息?

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

你可以参与行动\'deactivate_plugin\' 获取插件的基本名称和(作为第二个参数)是否在网络范围内停用。

看见wp-admin/includes/plugin.php function deactivate_plugins().

似乎没有插件删除的挂钩。

示例日志记录代码:

add_action( \'activated_plugin\', \'t5_plugin_logger\', 10, 2 );
add_action( \'deactivated_plugin\', \'t5_plugin_logger\', 10, 2 );

/**
 * Log plugin activations and deactivations.
 *
 * @param  string $plugin
 * @param  bool   $network_wide
 * @return void
 */
function t5_plugin_logger( $plugin, $network_wide )
{
    $log_size = 20;
    $log      = get_option( \'t5_plugin_log\', array () );

    // Remove the oldest entry.
    sizeof( $log ) > $log_size and array_shift( $log );

    $plugin_data = get_plugin_data( WP_PLUGIN_DIR . \'/\' . $plugin );
    $date_format = get_option( \'date_format\' ) . \' · \' . get_option( \'time_format\' );

    $log[] = array (
        \'user\'    => esc_html( wp_get_current_user()->display_name ),
        \'plugin\'  => $plugin_data[\'Name\'],
        \'network\' => $network_wide ? \'✔\' : \'\',
        \'time\'    => date( $date_format, time() ),
        \'action\'  => \'deactivated_plugin\' === current_filter() ? \'deactivated\' : \'activated\'
    );

    update_option( \'t5_plugin_log\', $log );
}
现在,每个插件的激活或停用都将添加到日志选项字段。您可以在任何地方使用此数据。我制作了一个小的仪表板小部件:

enter image description here

从GitHub下载插件:T5 Plugin Log

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴