Я нахожусь в процессе обновления плагина WordPress, который был выпущен какое-то время, и часть "будущей проверки" плагина заключается в том, чтобы избавиться от некоторых некачественных схем именования, которые были реализованы на начальных фазах плагина.
Я подумал, что просто добавлю ловушку активации, которая проверит, существует ли какое-либо из этих имен, и, если это так, просто удалите массив параметров плагина и отобразите уведомление, позволяющее пользователю знать, что ему нужно обновить своиварианты снова, потому что мы должны были очистить данные для проверки в будущем.Звучит достаточно просто, а?Очевидно, нет.
Я перепробовал все возможные способы, которые только мог придумать, и независимо от того, что я делаю, я НЕ МОГУ получить delete_option (), update_option (), add_option () и get_option () для работы внутрихук активации.
Ниже приведен пример настройки моего хука активации:
// add activation function to get rid of old options and services
function my_activation_hook() {
global $opts_array;
//Set variable to false before running foreach loop
$needs_update = false;
//Loop through $opts_array['bookmark'] and check for 'badname-' prefix
foreach($opts_array['bookmark'] as $bkmrk) {
if(strpos($bkmrk, 'badname-') !== false) {
//If any have 'badname-' prefix, set variable to true
$needs_update = true;
}
}
//If variable is true, delete options and set to default
if($needs_update === true) {
//Delete the options
unset($opts_array);
delete_option('MyPluginOpts');
//Reset the array to default values
$opts_array = array(
'position' => 'below', // below, above, or manual
'reloption' => 'nofollow', // 'nofollow', or ''
'targetopt' => '_blank', // 'blank' or 'self'
'bgimg-yes' => 'yes', // 'yes' or blank
'mobile-hide' => '', // 'yes' or blank
'bgimg' => 'shr', // default bg image
'shorty' => 'b2l',
'pageorpost' => '',
'bookmark' => array_keys($bookmarks_opts_data), // pulled from bookmarks-data.php
'feed' => '1', // 1 or 0
'expand' => '1',
'autocenter' => '1',
'ybuzzcat' => 'science',
'ybuzzmed' => 'text',
'twittcat' => '',
'tweetconfig' => '${title} - ${short_link}', // Custom configuration of tweet
'defaulttags' => 'blog', // Random word to prevent the Twittley default tag warning
'warn-choice' => '',
'doNotIncludeJQuery' => '',
'custom-mods' => '',
'scriptInFooter' => '1',
'vernum' => 'old', //Set to "old" to trigger update notice
);
add_option('MyPluginOpts', $opts_array); // Store the option to the database wp_options table in a serialized array
$opts_array = get_option('MyPluginOpts');// Now reload the variable with stored options from database
}
}
register_activation_hook(__FILE__, 'my_activation_hook' );