从HTML表单更新高级自定义字段

时间:2014-11-20 16:17:22

标签: php wordpress insert custom-post-type advanced-custom-fields

我正在使用自定义php代码,允许访问者通过使用表单创建帖子来向我的网站添加内容。

工作正常。

这是我的PHP代码:

<?php
if(isset($_POST['submit'])){

    $err = array();
    $err['status'] = true;
    $output = "";

    if(empty($_POST['content'])){
        $err['status'] = false;
        $err['msg'][] = 'Le champ "Article" ne peut être vide.';
    }

    if($err['status']){

        $insert = array(

            'post_status'   => 'publish',
            'post_title'    => htmlentities($_POST['title']),
            'post_content'  => htmlentities($_POST['content']),
            'post_category' => array(11),
            'post_author'   => 999,
            'tags_input' => htmlentities($_POST['tags']),

        );

       // $tags = $_POST['post_tags'];
        $post_id = wp_insert_post($insert);

        if($post_id != 0){

            $user_meta_values = array(
                'pseudo'    => htmlentities($_POST['pseudo']),
                'mail'      => $_POST['mail']
            );
            $output = add_post_meta($post_id, "user_meta", json_encode($user_meta_values)) ? 'Article inséré avec succès.' : 'Une erreur est survenue lors de l\enregistrement.' ;
        }

    }

    else{
        foreach($err['msg'] as $k=>$v)
            $output .= $v . '<br />';
    }
}
?>

和我的HTML表单:

<form method="post" action="<?php echo site_url().'/ajouter'; ?>">
    <p><label for="pseudo">Nom</label><input type="text" name="pseudo" id="pseudo" value="" /></p>
    <p><label for="mail">Mail</label><input type="text" name="mail" id="mail" value="" /></p>
    <p><label for="title">Titre</label><input type="text" name="title" id="title" value="" /></p>
    <p><label for="content">Article</label><textarea name="content" id="content" rows="10" cols="15"></textarea></p>
    <p><label for="tags">Tags</label><input type="text" name="tags" id="tags" value="" /></p>
    <p><label for="ACF_texte">ACF_texte</label><input type="text" name="ACF_texte" id="ACF_texte" value="" /></p>

    <p><input type="submit" name="submit" value="enregistrer" /></p>
</form>

在每个帖子上,我都有高级自定义字段。一个例如称为“text_ACF”。使用相同的方法,我希望能够从我的表单中获取文本,并将其插入到我的高级自定义字段(text_ACF)中。

在我的php中

类似的东西:

'ACF_custom_field_name' => htmlentities($_POST['text_ACF']),

并在我的HTML中:

<p><label for="text_ACF">ACF_texte</label><input type="text" name="text_ACF" id="text_ACF" value="" /></p>

我不知道怎么做,如何引用我的高级自定义字段。有人可以帮我吗?

非常感谢,

此外,我希望用户能够将图像上传到图像字段......

1 个答案:

答案 0 :(得分:1)

我认为你只需要使用ACF功能update_field($field_key, $value, $post_id)
在你的情况下,它将是这样的:

update_field(
    'field_4fc5ab37e1819lol',
    htmlentities($_POST['text_ACF']), 
    $post_id
);

要查找字段键,请转到字段组编辑屏幕,然后单击右上角的屏幕选项,如您所见图片:

enter image description here

你绝对应该看看这个职能的官方ACF Docs,在那里你会找到一个完整的出版物以及许多usge的例子......