In this article, We are going to see how to create a post using the front side form.
First of all, create a page template.
We are using this page template for an HTML form.
<?php /* Template Name: Post */
<?php /* Template Name: Post */ get_header(); ?> <?php $category = get_terms( array( 'taxonomy' => 'category', 'hide_empty' => false, ) ); ?> <div class="container"> <h3 class="text-center py-5">Post Form</h3> <form action=" " role="form" id="postform" method="POST" enctype="multipart/form-data"> <div class="row"> <div class="col-6"> <label>Enter Your Post Name :</label> <input type='text' name='postname' id='postname'><br> </div> <div class="col-6"> <label>Enter Your Post content :</label> <input type='text' name='postcontent' id='postcontent'><br> </div> <div class="col-6"> <label>Select Your Post Categories :</label><br> <?php foreach($category as $cat ){ if( $cat-> parent == 0){ ?> <input type="checkbox" id="postcat" name="postcat" value="<?php echo $cat->name ?>"> <label for="postcat"><?php echo $cat->name ?></label><br> <?php } foreach($category as $sub_cat ) { if($cat->term_id == $sub_cat->parent ) { ?> <input type="checkbox" id="postcat" name="postcat" class="sub" value="<?php echo $sub_cat->name ?>"> <label for="postcat"><?php echo $sub_cat->name ?></label><br> <?php } } ?> <?php } ?> </div> </div> <div class="row"> <div class="col-6"> <label>Enter Your Post Tages :</label> <input type='text' name='posttag' id='posttag'><br> </div> </div> <div class="text-center pt-5"> <button type="submit" name="submit" value="submit">Submit</button> <h4 class='msg pt-3'></h4> </div> </form> </div>
Enqueue ajax script in your theme’s function.php file.
function add_ajax_script() { wp_localize_script( 'ajax-js', 'ajax_params', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); } add_action( 'wp_enqueue_scripts', 'add_ajax_script' );
In this, we insert the post data using an AJAX call in WordPress posts.
jQuery(document).ready(function(event) { jQuery("#postform").on('submit',function(event) { event.preventDefault(); var postname = jQuery('#postname').val(); var postcontent = jQuery('#postcontent').val(); var test = []; jQuery("input[name='postcat']:checked").each(function() { test.push(jQuery(this).val()); }); var posttag = jQuery('#posttag').val(); if( postname == '' && postcontent == '' ){ alert("Please Fill Out All Of The Fields"); }else { jQuery.ajax({ method: 'POST', url: ajaxurl, data: { 'action' : 'post_create_ajax_request', 'postname' : postname, 'postcontent' : postcontent, 'postcat' : test, 'posttag' : posttag }, success:function(data) { jQuery('.msg').html('Successfully Submited Post...'); }, error: function(errorThrown){ window.alert(errorThrown); } }); } }); });
Create a function which is a call in ajax action and this function is used to insert data in the backend.
In this, data insert a using wp_insert_post() function.
function post_create_ajax_request(){ $cat_id = []; $category = $_POST['postcat']; foreach( $category as $cat ){ $cat_id[] = get_cat_ID($cat); } $title = $_POST['postname']; $content = $_POST['postcontent']; $value = $_POST['posttag']; $arrayval = explode(",",$value); $post = array( 'post_title' => $title, 'post_content' => $content, 'post_status' => 'publish', 'post_category' => $cat_id, 'tags_input' => $arrayval ); $post_id = wp_insert_post($post); } add_action( 'wp_ajax_post_create_ajax_request', 'post_create_ajax_request' ); add_action( 'wp_ajax_nopriv_post_create_ajax_request', 'post_create_ajax_request' );
Thank You, hope you guys found something useful.
In this article, we have to show Create and Used PIPE in angular
In this article, we have to show Create and Used PIPE in angular
In this article, we have to show Create and Used PIPE in angular