php - 如何在 ACF 表单中添加多个提交按钮?

标签 php wordpress advanced-custom-fields acfpro

我在 WordPress 网站的前端使用 ACF 表单。它用于在 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'
)); 
?>

最佳答案

可以使用隐藏字段和一些 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 表单中添加了“发布”和“另存为草稿”按钮。

关于php - 如何在 ACF 表单中添加多个提交按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60538742/

相关文章:

php - 我如何解析json数组?

php - Composer 找不到类并加载它们

css - 如何设置竖线位置?

php - 多个 PHP if 语句

php - 获取革命 slider 短代码

wordpress - 在管理员中通过 acf 字段过滤自定义帖子时出错

javascript - UAT 环境中 url 未定义的奇怪问题。在本地它正在工作 :

PHP MySQL 在下一个可用数字处停止循环

javascript - 在 WordPress 页面中运行内联 jQuery 脚本是否可行?

php - 仅通过用户名或电子邮件检查用户是否是管理员