我能够在functions.php中检索通过ajax发送的数据。但我需要在template.php(我的主题)中的数据。这是我第一次使用ajax,也许我正在以错误的方式处理它。我能够回应$ _POST [' myvar'];在functions.php中(我将在重新开始工作后发布代码)。假设设置正确,我可以访问functions.php之外的ajax数据吗?顺便说一句,我刚刚在Stack报名参加,所以如果不遵循某些程序,我会道歉。
被修改
谢谢大家 - 这是一个示例代码。在js文件中我有:
$(window).load(function(){
$("#cat").on("click",function() {
var selectedCat = $(this).children("option").filter(":selected").text();
$.get('../../../../../../wp-admin/admin-ajax.php', {
action: "parent_cat_send",
parent_cat: selectedCat
});
});
});
在functions.php中我有:
add_action('wp_ajax_parent_cat_send', 'current_par_cat');
add_action('wp_ajax_nopriv_parent_cat_send', 'current_par_cat');
function current_par_cat() {
global $parent_cat;
$parent_cat = $_GET['parent_cat'];
echo $parent_cat;
wp_die();
}
响应具有$ parent_cat值。我想在templates.php之外的functions.php之外使用$ parent_cat。到目前为止,我尝试使用全局变量创建一个函数:
function set_global_var($new_value)
{
global $my_global_var;
$my_global_var = $new_value;
}
并在ajax函数中调用它:
set_global_var($parent_cat);
为了进一步解释我的目标,我试图从下拉列表中获取所选值。此值是wp_dropdown_categories生成的父类别名称。获得它之后,我想获得父类别的子类别。我想到了Ajax(我之前从未使用过),因为我想要有两个下拉选项 - 一个包含父类别,另一个包含由所选父类别生成的子类别(可能没有刷新页面)。感谢。
答案 0 :(得分:0)
按照步骤在模板文件中重新呈现数据。有两种方法来渲染数据,你可以实现相同的时间,但它对情况的影响。
如果您要从管理面板发送ajax请求并希望在这种情况下更新模板(前端),则首先必须在数据库中对数据进行处理。正如您所说,您现在通过functions.php文件访问数据,您必须update_option()将数据添加或更新到wordpress数据库。添加必须使用get_option()在模板中检查并获取它,但它只会从前端刷新页面刷新。
现在情况二,您正在从前端发送数据并想要更新它。在这种情况下,请执行update_option()
和get_option()
的第一步,并发送您希望在首页显示的functions.php
的响应(仅在您用于发送请求的同一页面上) 。)并显示它。因此,如果您刷新页面,则相同的更新数据将在您的模板上进行更新。
希望你明白我试图解释的内容。
答案 1 :(得分:0)
maksbd19给了我正确的答案,因为我无法访问functions.php之外的变量。不确定如何将响应标记为正确答案,但现在是:
"同意@rjdown,我们无法帮助您处理这些小信息。但我现在可以说的是,据我所知,你不能在你的主题文件中使用你的ajax代码,因为当你的ajax请求被解析时它们没有被加载。只加载了functions.php文件,您应该只拥有此文件中的所有业务逻辑。 - maksbd19 4月26日3:28"