2016-09-16 27 views
1

私は、次のコードを使用して(私はあなたのほとんどがそれに精通している願っています)新しい投稿を送信するためのフロントエンドのフォームを作成しています:acf_form()検証とフィードバック

$options = array(
    'post_id' => 'new_post', 
     'new_post' => array(
     'post_type'  => 'post', 
     'post_status' => 'pending' 
    ), 
    'html_before_fields' => $html_before_fields, 
    'html_after_fields' => $html_after_fields, 
    'uploader' => 'basic', 
    'submit_value' => __("Create", 'domain'), 
    'updated_message' => __("Your post was submitted successfully! Please wait for it to be approved.", 'domain'), 
); 

acf_form($options); 

そして、ここでは、スニペットです私のfunctions.php;

function _action_ssd_acf_submit_post_pre_save($post_id) { 

    if(empty($_POST['acf'])) { 
     return; 
    } 

    if (!isset($_POST['acf_post_submit'])) { // this is a hidden input field in the form 
     return; 
    } 

    if () { // some more checks here 
     wp_mail(); //removed parameters for cleaner code, I send email to the admin 
    } 

    if(empty(get_user_meta(get_current_user_id(), 'this_user_can_submit', true))) { 
     exit; 
     return; 
    } 


} 

add_action('acf/pre_save_post', '_action_ssd_acf_submit_post_pre_save'); 

投稿はいつでも下書きとして保存されるため、保存を停止できますか?

また、投稿時にエラーがある場合はupdate_messageを変更する方法が見つからないようです。たとえば、ユーザーに必要なuser_metaがない場合。

私の問題は、(検証エラーの場合)投稿の投稿をやめて、ページが更新された後にフロントエンドのメッセージフィードバックを送信できないということです。

答えて

0

投稿を公開し、草案として設定しない場合は、'post_status' => 'post'の代わりに'post_status' => 'publish'を使用する必要があります。

+0

私はここにコードを書いて間違っていました。投稿ステータス '' post_status '=>' post''は、上記に書かれていたはずのものです。私の問題は、投稿の投稿を中止して(検証エラーの場合)、ページが更新された後にフロントエンドのメッセージフィードバックを送信できないことです。 – Ziik