我正在为 WordPress 开发一个排序插件,它安装了 Redux 框架来管理每个部分的选项。该插件使用 AJAX 获取网站主页中所有部分的 id,然后将这些值传递给插件主文件以在将值存储在当前用户元数据中的函数中进行处理。效果很好,这里没问题。该函数如下所示:
add_action( 'wp_ajax_save_sections_ids', 'save_sections_ids_sorting_sections' );
function save_sections_ids_sorting_sections() {
//stuff here...
$user_ide = get_current_user_id(); //it works because it is inside a hook
update_user_meta($user_ide, "set-sections", $sections_ids);
die();
}
然后我必须获取 user_meta 中存储的值以将它们传递给 Redux 字段,所以我在插件的主文件中编写了其他函数。功能是这样的:
function get_the_db_sections_ids() {
$user_ide = 1; //This should be get_current_user_id() or something similar, but nothing works, not even globalizing $current_user and using get_currentuserinfo();
$sections_ids = get_user_meta($user_ide, "set-sections", true);
$sorter_field = array(
"section_id" => "basic",
'id' => 'homepage-sections',
'type' => 'sorter',
'title' => 'Control de secciones',
'desc' => 'Arrastra y suelta los bloques con los nombres de las secciones, tanto para ordenarlas verticalmente como para desactivarlas o activarlas.',
'compiler' => 'true',
'options' => array(
'enabled' => array(
),
'disabled' => $sections_ids
),
);
return $sorter_field;
}
正如您在上面函数的评论中注意到的那样,我也尝试了几种方法require_once("/../../../wp-load.php")
,但没有任何反应。我尝试do_action
and add_actions
, 创建一个钩子,但它们也使用全局变量,据我所知,全局变量在插件中没有钩子的函数中不起作用。
但我还没有完成。真正棘手的部分是,我在 Redux 配置文件中调用 Redux 类的实例(示例为sample-config.php,我有一个自定义文件,但它是相同的)。
实例是Redux::setField($opt_name, get_the_db_sections_ids());
如果我从一个函数或链接到 AJAX 调用的函数调用它,这个问题不会打印任何内容。
如您所见,实例的第二个参数是我在上面编写的函数,如果我设置$user_ide
为,它可以完美运行1
,但我希望数据存储在所有 adminsuser_meta
中,以防用户1
被删除或其他情况。
有没有办法实现我想要的,或者将数据存储在其他地方并从那里获取。我正在考虑在数据库中创建一个自定义表,并使用它wpdb
来检索数据,但我想我也不能使用wpdb
,因为这将是同样的问题。
我觉得我错过了一些非常基本的东西,但我无法得到它。请帮忙。