gpt4 book ai didi

wordpress - add/get/delete/update_option() 在激活钩子(Hook)(wordpress)中不起作用

转载 作者:行者123 更新时间:2023-12-02 04:15:49 26 4
gpt4 key购买 nike

我正在更新一个已经发布了一段时间的 WordPress 插件,插件“面向 future ”的一部分是摆脱在插件开始阶段实现的一些伪劣命名方案。

我想我会简单地添加一个激活钩子(Hook)来检查这些名称是否存在,如果存在,只需删除插件选项数组并显示一个通知,让用户知道他们需要再次更新他们的选项,因为我们必须擦洗数据以备将来校对。听起来很容易,嗯?显然不是。

我已经尝试了我能想到的所有可能的方法,无论我做什么,我都无法让 delete_option()、update_option()、add_option() 和 get_option() 在激活钩子(Hook)中工作。

下面是我的激活钩子(Hook)是如何设置的示例:

// 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' );

最佳答案

以下代码是我需要在自己的插件中更新一些“伪劣命名方案”时构建的摘要:)

在询问 this question 后,我已经构建了我的解决方案在 WordPress StackExchange 中。完整的线程值得一读。

class MyPlugin {
var $adminOptionsName = "MyPlugin";

function MyPlugin() {
}

function init() {
$this->getAdminOptions();
}

function getAdminOptions() {

// New options and values
$theNewOptions = array(
'option_1' => 0,
'option_2' => '',
'version' => '1.0'
);

// Grab the options in the database
$theOptions = get_option($this->adminOptionsName);

// Check if options need update
if( !isset($theOptions['version']) && !empty($theOptions) ) {
foreach( $theOptions as $key => $value ) {
if( $key == 'not_needed' ) {
unset( $theOptions[$key] );
}
if( $key == 'old_option_1') {
$theOptions['option_1'] = $value;
unset( $theOptions[$key] );
}
// etc...
}
}

// Proceed to the normal Options check
if (!empty($theOptions)) {
foreach ($theOptions as $key => $option) {
$theNewOptions[$key] = $option;
}
}

update_option($this->adminOptionsName, $theNewOptions);

}
}

关于wordpress - add/get/delete/update_option() 在激活钩子(Hook)(wordpress)中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com