如何在wordpress中用ACF创建具有两个值的新字段类型



我昨天开始使用ACF。我想创建一个新的字段类型。我听从了官方网站的指示。但我不明白什么。我希望我的字段包含两个文本区域。我真的不知道怎么做。所以我创建了一个新字段,它出现在编辑页面上,但我无法处理这两个值。以下是我的create_field函数在我的字段的php文件中的样子(我认为这是我需要更改的):

function create_field( $field ){ ?>
    <table>
      <tr> <th scope="col">Year</th> <th scope="col">Text</th> </tr>
      <tr>
         <td>
          <?php echo '<textarea id="' . $field['id'] . 'year"
              class="' . $field['class'] . '"
              name="' . $field['name'] . 'year" >'
              . $field['value']['year'] .
            '</textarea>';
          ?>
        </td>
        <td>
          <?php echo '<textarea id="' . $field['id'] . 'text"
            class="' . $field['class'] . '"
            name="' . $field['name'] . 'text" >'
              . $field['value']['text'] .
            '</textarea>';
          ?>
        </td>
      </tr>
    </table>
    <?php
}

现在,ACF总是保存第二个文本区域的值。我不明白的是,ACF怎么知道要保存它?我该如何保存第一个的值呢?

如果你能给我这个领域的任何建议,我也对教程感兴趣。我试图在互联网上找到更多的字段类型(比内置的字段类型更多),但我什么也没找到。

感谢您的帮助:Koli

我不知道ACF是如何工作的,但您的代码应该将yeartext定义为数组的新级别。

好吧,你的代码看起来不错,但你唯一必须更改的是名称:

function create_field( $field ){ ?>
    <table>
      <tr> <th scope="col">Year</th> <th scope="col">Text</th> </tr>
      <tr>
         <td>
          <?php echo '<textarea id="' . $field['id'] . 'year"
              class="' . $field['class'] . '"
              name="' . $field['name'] . '[year]" >'
              . $field['value']['year'] .
            '</textarea>';
          ?>
        </td>
        <td>
          <?php echo '<textarea id="' . $field['id'] . 'text"
            class="' . $field['class'] . '"
            name="' . $field['name'] . '[text]" >'
              . $field['value']['text'] .
            '</textarea>';
          ?>
        </td>
      </tr>
    </table>
    <?php
}

现在,我已经尽可能地把这个$field['name'] . 'year的名字改成了这个$field['name'] . '[text]。请注意,此处不需要单引号。

现在,这将把数据保存为array。以下是打印$field['name']:时得到的内容

array(
    'year' => 'your saved val',
    'text' => 'your saved val'
)

最新更新