我正在开发一个创建自定义帖子类型的插件。
我已经创建了一个带有自定义元输入字段的自定义元框。
使用AJAX函数,我复制输入字段。它们是同一个名字和同一个班级。
一切正常,但如何使用save_post
挂钩操作保存这些数据?
如果我使用经典函数update_post_meta
,它只保存最后一个值。
我需要创建一个数组并将其传递给save函数。
怎么样?
如果我使用admin-ajax.php,如何在回调函数中传递post_id
update_post_meta
?
我不想用wpalchemy。
答案 0 :(得分:0)
输入字段 name
必须采用数组格式:field_name[]
。
在<form>
:
<td><input type="text" class="widefat" name="name[]" /></td>
<td><input type="text" class="widefat" name="url[]" value="http://" /></td>
然后在save_post
行动:
$names = $_POST['name'];
$urls = $_POST['url'];
$count = count( $names );
for ( $i = 0; $i < $count; $i++ )
{
if ( $names[$i] != '' )
{
$new[$i]['name'] = stripslashes( strip_tags( $names[$i] ) ); // Sanitization
if ( $urls[$i] == 'http://' )
$new[$i]['url'] = '';
else
$new[$i]['url'] = stripslashes( $urls[$i] );
}
}
if ( !empty( $new ) && $new != $old )
update_post_meta( $post_id, 'repeatable_fields', $new );
示例改编from here。
答案 1 :(得分:0)
谢谢!这是完美的 ! 我用
$new[$i]['name'] = stripslashes( strip_tags( htmlentities($names[$i]) ) );
对于像'à,è,ì,ò,ù'这样的特殊字符,它可以直接使用!
谢谢!