将Filter Upgrader_POST_Install限制为单个插件

时间:2016-01-20 作者:PthPndr

我正在使用以下过滤器运行一个函数,该函数在插件更新后生成CSS文件。当前,任何插件更新时都会生成CSS。有没有一种简单的方法可以将这种运行限制在特定的插件上?

add_filter(\'upgrader_post_install\', \'generate_my_css\', 100, 0);

function generate_my_css() {
    $ss_dir = get_stylesheet_directory();
    $pi_dir = plugin_dir_path( __FILE__ );
    ob_start();
    require($pi_dir . \'includes/css/mycss.php\');
    $css = ob_get_clean();
    file_put_contents($ss_dir . \'/css/mycss.css\', $css, LOCK_EX);
}
理想情况下,上述代码将存在于正在更新的插件中,但也可以很容易地存在于函数中。php

2 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

upgrader_post_install 有三个参数$response, $hook_extra$result 这会给你额外的信息。目前我自己也不能看一眼,但我想特别是$result 变量应为您提供其他信息以进行区分。

SO网友:Humberto Herrador

add_filter(\'upgrader_post_install\',\'upgrader_post_install_func\',10,3);

function upgrader_post_install_func($response,$hook_extra,$result){
      /*
          visualizar $result y $hook_extra, se guarda en carpeta wp-content.
       */
      
      #file_put_contents(WP_CONTENT_DIR . \'/test.txt\', serialize($result)."\\r\\n", FILE_APPEND);

    /* renombrar complemento actualizado desde github zipball, para mantener 
       actualizaciones dado que github al descargar zip y descomprimirlo lo pone en 
       este formato: <usuario github>-<nombre repo>-<codigo version>
       y se necesita <nombre repo>-<main | master>
    */
    $plugin = explode(\'/\', $hook_extra[\'plugin\']); 
    rename(WP_PLUGIN_DIR .\'/\'. $result[\'destination_name\'],WP_PLUGIN_DIR .\'/\'.$plugin[0]);
    return $result;
}
埃斯佩罗·塞尔德阿尤达。