这个Codex suggests 您使用的wp_load_alloptions
相反
因此,我建议您使用wp_load_alloptions
. 我认为这从技术上回答了这个问题。
wp_load_alloptions
将从选项表中提取所有选项,而您的问题并没有解释为什么需要这样做。你真的只需要my_plugin_*
选项,因为这将是一个不同的答案?如果是这样的话,我知道没有“通过通配符获取选项”函数,但构造起来并不困难。
function get_options_by_wildcard($prefix = \'\') {
if (empty($prefix)) return false;
global $wpdb;
$ret = array();
$options = $wpdb->get_results(
$wpdb->prepare("SELECT option_name,option_value FROM {$wpdb->options} WHERE option_name LIKE %s",$prefix.\'%\'),
ARRAY_A
);
if (!empty($options)) {
foreach ($options as $v) {
$ret[$v[\'option_name\']] = maybe_unserialize($v[\'option_value\']);
}
}
return (!empty($ret)) ? $ret : false;
}
var_dump(get_options_by_wildcard(\'my_plugin_\'));
你的插件应该“知道”它的一个选项是什么,这样你就可以通过循环插件选项来完成它,而不需要另一个查询。例如,假设您的插件是一个类,并且可用的插件选项存储在class变量中
plugin_options
:
function get_my_plugin_options() {
$ret = array();
foreach ($this->plugin_options as $v) {
$ret[$v] = get_option($v);
}
return $ret;
}
var_dump(get_my_plugin_options());