我昨天开始使用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是如何工作的,但您的代码应该将year
和text
定义为数组的新级别。
好吧,你的代码看起来不错,但你唯一必须更改的是名称:
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'
)