Как добавить несколько кнопок отправки в форму ACF?

Я использую форму ACF во внешнем интерфейсе веб-сайта WordPress. Он используется для создания пользовательских сообщений в WordPress. Мне нужно добавить две кнопки отправки в эту форму ACF. когда я нажимаю первую кнопку, должно быть создано новое сообщение, и статус сообщения должен быть опубликован, а когда я нажимаю другую кнопку, он должен создавать новое сообщение, а статус сообщения должен быть черновиком.

Мой код ниже создаст сообщение со статусом опубликовано. Как я могу этого добиться?

<?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'
)); 
?>

person karthik_krish    schedule 05.03.2020    source источник


Ответы (1)


Этого можно добиться, используя скрытое поле и немного 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.

person Muralitharan V    schedule 05.03.2020
comment
Спасибо, Мурали, это очень пригодилось в моем проекте. Теперь я исправляю проблему - person karthik_krish; 05.03.2020