如何在Wordpress save_post挂钩动作中保存动态创建的输入字段值?

时间:2014-04-10 15:28:52

标签: wordpress wordpress-plugin custom-post-type

我正在开发一个创建自定义帖子类型的插件。 我已经创建了一个带有自定义元输入字段的自定义元框。 使用AJAX函数,我复制输入字段。它们是同一个名字和同一个班级。 一切正常,但如何使用save_post挂钩操作保存这些数据?

如果我使用经典函数update_post_meta,它只保存最后一个值。 我需要创建一个数组并将其传递给save函数。 怎么样?

如果我使用admin-ajax.php,如何在回调函数中传递post_id update_post_meta? 我不想用wpalchemy。

2 个答案:

答案 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]) ) );

对于像'à,è,ì,ò,ù'这样的特殊字符,它可以直接使用!

谢谢!