当前位置: 首页 > 知识库问答 >
问题:

使用AJAX更新自定义Wordpress字段

程枫
2023-03-14

我正在尝试使用Ajax更新Wordpress中的自定义域(例如,使用表单文本输入,通过单击按钮替换自定义域文本)。我正在使用高级自定义字段插件,并遵循我在这里找到的示例,但这似乎不起作用:https://support.advancedcustomfields.com/forums/topic/use-update_field-with-ajax/

我所做的是:

(1)将html表单添加到我的single-(post-type).php中

<form id="test-form" action="">
<input type="text" name="input-test" value="<?php the_field('field-name'); ?>">
<input type="submit" value="Update">
</form>

(2)functions.php中的update_field函数(这是一个ACF函数)

function test_function() {
    $input_test = $_POST['input-test'];
    if (!isset($input_test) || $input_test == "") { $input_test = "Fall Back"; }
    update_field('field-name', $input_test);
    wp_die();
}
add_action( 'wp_ajax_nopriv_test_function',  'test_function' );
add_action( 'wp_ajax_test_function','test_function' );

(3)在functions.php中对Js脚本进行排队

function theme_scripts() {
    wp_enqueue_script( 'functionality', get_template_directory_uri() . '/js/functionality.js', array ( 'jquery' ), 1.1, true);

    wp_localize_script('functionality', 'MyAjax',
    array(
        'ajaxurl' => admin_url('admin-ajax.php'),
        'postCommentNonce' => wp_create_nonce('myajax-post-comment-nonce')
    )
);
}
add_action( 'wp_enqueue_scripts', 'theme_scripts' );

(3)创建Javascript文件js/functionality.js

jQuery(document).ready(function() {
  var ajaxurl = 'http://'+window.location.host+'/wp-admin/admin-ajax.php';
  var form = "#test-form";
  jQuery(form).submit(function(event) {
    event.preventDefault();
    jQuery.ajax({
      url: ajaxurl + "?action=test_function",
      type: 'post',
      data: jQuery(form).serialize(),
      success: function(data) {
        console.log("SUCCESS!");
      },
      error: function(data) {
        console.log("FAILURE");
      }
    });
  });
});

不知道我缺少了什么,因为我对Ajax很陌生。我只是得到‘成功’但领域没有得到更新。我也尝试了https://www.youtube.com/watch?v=z0jw226qkam中显示的一个变体,得到了相同的结果。

共有1个答案

金坚
2023-03-14

只需将success回调更新为如下所示,它就会工作:

...
success: function(data) {
   console.log("SUCCESS!");
  $('name="input-test"').val(data)
},
...
 类似资料:
  • 我在修改我安装的WordPress流行帖子插件时遇到了一些问题。 它可以选择从自定义字段获取缩略图,我已将其输入为“image_facebook”。但是缩略图没有显示。 在检查代码时,我发现imgsrc有post id而不是返回图像URL。 我已经把问题缩小到我安装的另一个插件http://wordpress.org/plugins/advanced-custom-fields/ 当它处于活动状态

  • 我正在为Post类型Post创建自定义endpoint。Javascript的请求工作正常,但无法理解如何更新,例如,帖子的内容。 我已经创建并注册了一个路由,我为路由创建了一个回调函数,我还创建了一种小表单,在其中插入了post ID和内容。 这是路由的代码 这是回调函数 来自 javascript 的 XMLHTTPRrequest 是 变量“内容”和“id”是我写在表单字段内的值。 resp

  • 问题内容: 我将一个自定义字段添加到名为的表中,这样可以在注册过程中将数据获取到配置文件中,如下所示: 但是,现在,我希望能够在管理个人资料时对其进行更新,但是似乎找不到一种方法来进行更新。 我是否需要自己更新表?如果没有,执行此操作的适当方法是什么? 仅供参考,以防万一,我将Dapper用作数据访问层。但是,如前所述,如果我要这样做的话,我只能通过Dapper更新表,我只是觉得类或类似的东西已经

  • 我可以使用自定义字段值获取数据吗?我的是,字段名是。那么,如何使用获取所有数据呢? 代码如下: 此代码不起作用。

  • 我试图将我的程序转换为 GUI。我有 2 个主题类型的自定义数组列表 (b 我可以通过ArrayList b=B.get核心()调用这个自定义数组列表;我如何让这个数组列表在我的Jlist中显示。我也试图将JList类型更改为主题,但没有成功。 如何更新JList以在按钮单击事件中显示每个列表。

  • 我使用Wordpress Rest API将内容从WordPres斯网站导入到PHP应用程序中。这并不复杂,只是一个包含帖子列表和个人帖子页面的主页。 我在API响应中添加了一些字段,特别是获取帖子中插入的第一张图片的url的字段。 这是该部分的代码: 当我在主页中列出帖子时,它可以正常工作,但在单个帖子页面中,字段为空。对此,我唯一能给出的解释是,我有一个用于单个帖子的自定义endpoint: