karthik_krish:
私はWordPressのウェブサイトのフロントエンドにACFフォームを使用しています。ワードプレスのカスタム投稿を作成するために使用されます。私は、このACFフォームでの2つの送信ボタンを追加する必要があります。私は最初のボタンをクリックしたとき、それは新しいポストを作成する必要があり、ポストステータスが公開されなければならないと私は別のボタンをクリックしたとき、それは新しい投稿を作成する必要があり、ポストステータスはドラフトでなければなりません。
公開された私のコードは以下の状況での投稿を作成します。私はこれをどのように達成することができますか?
<?php
acf_form(array(
'post_id' => 'new_post',
'field_groups' => array(258),
'new_post' => array(
'post_type' => 'property',
),
'post_title' => true,
'post_title_label' => 'Community Name',
'submit_value' => 'Submit for Review'
));
?>
Muralitharan V:
隠されたフィールドとjQueryのビットを使ってこれを実現することも可能です。
ステップ1:あなたが1として隠されたフィールドと設定されたデフォルト値を追加する必要があります。
<?php
acf_form_head();
acf_form(array(
'post_id' => 'new_post',
'field_groups' => array(258),
'new_post' => array(
'post_type' => 'property',
),
'id' => 'form_draft',
'html_after_fields' => '<input type="hidden" id="hiddenId" name="acf[current_step]" value="1"/>',
'return' => home_url('property-thank-you'),
'post_title' => true,
'post_title_label' => 'Community Name',
'submit_value' => 'Publish'
)
);
?>
ステップ2:
フォームの近くにコードの下に使用して、jQueryのを使用して、フォームにこのフィールドを追加します。
<input type="submit" id="draft_btn" class="acf-button2 button button-primary button-large" name="draft_btn" value="Save as Draft" onclick="click_ignore();">
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#draft_btn").detach().appendTo('.acf-form-submit');
});
</script>
ステップ3:2とその値の上書き「ドラフト」ボタンをクリックします。
<script type="text/javascript">
function click_ignore(e) {
document.getElementById('hiddenId').value = 2;
return false;
}
</script>
ステップ4:私たちはクリックボタンに基づいてポストの状態を変更しますfucntions.phpにコードの下に追加します。
<?php
function my_acf_save_post($post_id) {
$submitedStatus = $_POST['acf']['current_step'];
if ($submitedStatus == 1){
$value = 'pending';
}else if ($submitedStatus == 2){
$value = 'draft';
}
// Update current post
$my_post = array(
'ID' => $post_id,
'post_status' => $value,
);
remove_action('acf/save_post', 'my_acf_save_post', 20);
// Update the post into the database
wp_update_post($my_post);
// Add the action back
add_action('acf/save_post', 'my_acf_save_post', 20);
}
// run after ACF saves the $_POST['acf'] data
add_action('acf/save_post', 'my_acf_save_post', 20);
?>
我々は、単一のACFフォームに「下書きとして保存」と「を公開」ボタンの両方を追加しました。