首页 > 解决方案 > Wordpress - 如果手动输入,数组不被视为数组

问题描述

我正在建立一个 Wordpress 网站来跟踪用户进度。我创建了一个名为的自定义用户文本字段completed_sections,该字段存储用户已完成的网站部分的数组。我正在构建这样的数组:

<?php
  if (is_user_logged_in()) {
    global $completed;
    $completed = get_field('completed_sections', 'user_'.$userID);
  }

  function update_completed_sections() {
    global $completed;
    global $userID;
    $completedID = $_POST['quizID'];
    $completionDate = $_POST['date'];
    $completed_section[] = array(
      'ID' => $completedID,
      'date' => $completionDate
    );
    if (!empty($completed)) {
      $combined = array_merge($completed, $completed_section);
    } else {
      $combined = $completed;
    }
    update_field('completed_sections', $combined, 'user_'.$userID);
  }
  add_action('wp_ajax_complete_section', 'update_completed_sections');
?>

只要我使用 AJAX 调用来触发该update_completed_sections函数,它就可以正常工作。添加到自定义用户字段的数组如下所示:

[{"ID":"58","date":"07\/31\/20"},{"ID":"79","date":"08\/03\/20"}]

但是,如果我进入 Wordpress 后端的用户部分并手动尝试 tp update 数组,它会破坏它。即使我没有更改任何内容,我只是进去并点击“更新用户”,它也会导致 Wordpress 不再将该字段视为数组。关于如何确保此字段被视为数组的任何想法,即使它是通过UsersWordpress 部分或通过 PHPMyAdmin 手动输入的?

标签: phparrayswordpress

解决方案


推荐阅读