Hi Elliot,
Is it possible to create two forms, one that creates a new post and the other to create a post with a custom post type?
I’m guessing I need to pass something to the acf_form when I call it in the template to say I want a post_type => post or post_type => my_custom_post_type
Is this possible?
Thanks!
Mike
Hi @planktonwebdesign
Yes.
The acf_form function allows you to define some custom HTML. Please see the docs to read more on this.
I would add some custom HTML as a hidden input with a name of ‘my_post_type’. Please don’t use ‘post_type’ – this will conflict with WP.
Then in your acf/pre_save_post filter, you can create a new post and use the ‘my_post_type’ value in the $_POST to set the post type.
Hope that helps.
Thanks
E
Awesome thanks heaps Elliot.
Managed to get it happening code below for anyone else:
In my template file
<?php
$args = array(
'post_id' => 'new',
'field_groups' => array(56,127),
'html_before_fields' => '<input type="hidden" name="the_post_type" value="this is where you pop the post type or just post"/>'
);
acf_form( $args );
?>
and in the functions.php
function my_pre_save_post( $post_id )
{
// check if this is to be a new post
if( $post_id != 'new' )
{
return $post_id;
}
// Create a new post
$post = array(
'post_status' => 'publish' ,
'post_title' => $_POST["fields"]['field_529c0886500bd'],
'post_type' => $_POST['the_post_type']
);
$post_id = wp_insert_post( $post ); // Insert the post
do_action( 'acf/save_post' , $post_id ); // Save the fields to the post
wp_redirect( add_query_arg( 'updated', 'true', get_permalink( $post_id ) ) ); exit; // Redirect to the new post
return $post_id;
}