如何让插件激活URL使用URL变量?

时间:2021-01-23 作者:Nadal

我需要从plugin activate link 在插件列表视图中时。

/wp-admin/plugins.php?action=activate&plugin=move-blocks%2Fmove-blocks.php&plugin_status=all&paged=1&s&_wpnonce=6c106fb280

add_action(\'admin_init\', function() 
{
  if( $_GET[\'action\'] == \'activate\' && $_GET[\'plugin\'] == \'move-blocks/move-blocks.php\' ) {
    copy($src, $dest);
  }
}
当我跑步时$_GET 我没有看到激活链接中显示的查询字符串。显然它是由AJAX函数处理的。

如何获取文字激活URL?

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

事实证明,在激活时获取URL不太可能通过标准$_GET 所以WP有这样的钩子。

插件激活

我需要检查存储在中的备份文件wp-content 根目录,如果它们之前是在取消激活或更新期间创建的,则将其复制到插件文件夹。

register_activation_hook(__FILE__, function() 
{
  add_option(\'move_blocks_activated\',\'move-blocks\');

  if( file_exists(WP_CONTENT_DIR.\'/moveblocktmp/override.ini\') ) {
    copy(WP_CONTENT_DIR.\'/moveblocktmp/override.ini\', MYPLGPATH.\'/msg/override.ini\');
  }
}
插件停用时的操作Deactivate 链接已处理。这在插件更新期间起作用,以存储用户创建的文件,同时删除和替换插件。

register_deactivation_hook(__FILE__, function() 
{
  add_option(\'move_blocks_deactivated\',\'move-blocks\');
  // create backup directory
  if( !file_exists(WP_CONTENT_DIR.\'/moveblocktmp\') ) {
    mkdir(WP_CONTENT_DIR.\'/moveblocktmp\',0755);
  }

  // copy files for backup
  if( file_exists(MYPLGPATH.\'/msg/override.ini\') ) {
    copy(MYPLGPATH.\'/msg/override.ini\', WP_CONTENT_DIR.\'/moveblocktmp/override.ini\');
  }
}
先前流程之后的操作
add_action(\'admin_init\', function() 
{
  // delete the previously created DB option row
  if( !is_null(get_option(\'move_blocks_activated\')) ) {
    delete_option(\'move_blocks_activated\');
  }
  if( !is_null(get_option(\'move_blocks_deactivated\')) ) {
    delete_option(\'move_blocks_deactivated\');
  }
            
});
使用插件删除uninstall.php 方法。

<?php

if( !defined(\'WP_UNINSTALL_PLUGIN\') ) {
  die;
}

// delete the backup directory
if( file_exists(WP_CONTENT_DIR.\'/moveblocktmp\') )
  rmdir(WP_CONTENT_DIR.\'/moveblocktmp\');
  // rmdir() will not delete a directory with files. I use a recursive function.

相关推荐