Hello am building a user generated content sharing theme
This is my code for video submission from front end
But this code only allows to add videos from a url
How can i allow them to upload videos and then attach it to post
Heres the code !
<?php
/*
Template Name: Submit Content video Template
*/
// if you are not using this in a child of Twenty Eleven, you need to replicate the html structure of your own theme.
?>
<?php include("Header-submit-vid.php"); ?>
<div id="primary">
<div id="content" role="main">
<?php
if(isset($_POST['new_post']) == '1') {
$post_title = $_POST['post_title'];
$post_category = 'todays_post';
$post_content = $_POST['post_content'];
$tags = $_POST['post_tags'];
$winerating = $_POST['winerating'];
$new_post = array(
'ID' => '',
'post_author' => $user->ID,
'post_category' => array($post_category),
'post_content' => $post_content,
'tags_input' => array($tags),
'post_title' => $post_title,
'post_category' => array($_POST['cat']), //
'post_status' => 'publish',
'post_type' => 'post',
'winerating' => $winerating
);
$post_id = wp_insert_post($new_post);
if (!function_exists('wp_generate_attachment_metadata')){
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
}
if ($_FILES) {
foreach ($_FILES as $file => $array) {
if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
return "upload error : " . $_FILES[$file]['error'];
}
$attach_id = media_handle_upload( $file, $post_id );
}
}
if ($attach_id > 0){
$post = get_post($post_id,'ARRAY_A');
$image = wp_get_attachment_image_src( $attach_id, 'large' );
$image_tag = '<p><a href="'.$image[0].'" rel="lightbox" title="<?php the_title();? >" > <img src="'.$image[0].'" width="'.$image[1].'" height="'.$image[2].'" /></a></p>';
//add image under the content
$post['post_content'] = $image_tag . $post['post_content'];
//add image above the content
//$post['post_content'] = $post['post_content'] . $image_tag;
$post_id = wp_update_post( $post );
}
// This will redirect you to the newly created post
$post = get_post($post_id);
wp_redirect( get_permalink($post_id));
exit();
}
?>
<html>
<head>
<title>Add Your Funny Video</title>
<script src="/ajax/libs/jquery/1/jquery.min.js"></script>
<!--[if IE]>
<script src="/svn/trunk/html5.js"></script>
<![endif]-->
<style>
article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
#x { display:none; position:relative; z-index:200; float:right}
#previewPane { display: inline-block; }
</style>
<meta charset=utf-8 />
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
< form method="post" action="" enctype="multipart/form-data" name="myform">
<p>
<br />
<!----------<Video Url>----->
<span style="font-size: 15px;font-weight: bold;position: relative;right: -93px;">Enter Your Video Url Here :-</span>
<input type="url" name="post_content" size="53" required="required" id="text-desc" class="rounded" style="position: relative;right: -86px;">
<!----------</Video Url>----->
<br /> <br />
<!----------<Post Title>----->
<span style="font-size: 15px;font-weight: bold;position: relative;right: -93px;">Post Title</span><br />
<input type="text" required="required" name="post_title" size="53" id="input-title" placeholder="Add A Title Here" class="rounded" style="position: relative;right: -86px;">
<br>
<!----------</Post Title>----->
<br/>
<!--<post tags>-->
<fieldset class="tags">
<label for="post_tags">
<span style="font-size: 15px;font-weight: bold;position: relative;right: -93px;">Post Tags :-</span></label><br/>
<input type="text" class="rounded" placeholder="Add Some Tags To Get Higher Votes"value="" size="53" tabindex="35" name="post_tags" id="post_tags" style="position: relative;right: -86px;">
</fieldset>
<!--</post tags>-->
</br>
<!-- <post Category> -->
<fieldset class="category">
<label for="cat">
<span style="font-size: 15px;font-weight: bold;position: relative;right: -93px;">Select Your Post Category</span></h4></label><div style="position: relative;right: -85px;"><?php wp_dropdown_categories( 'tab_index=10&taxonomy=category&hide_empty=0' ); ?></div>
</fieldset>
<!-- </post Category> -->
<input type="hidden" name="new_post" value="1" /> <br>
<div style="Float:right;"><input class="submitbutton" type="submit" name="submit" value="Add" /><br><br></div>
</form>
</body>
</div></div></div>
<!--// New Post Form -->
<div style="display:inline-block;margin-top:-72px;"><?php include("sidebar-submit.php"); ?></div>
<div style="position:relative"><?php get_footer(); ?></div>
You could use wp_insert_attachment to upload a video file into the media library and then attatch it to the newly created post.
See http://codex.wordpress.org/Function_Reference/wp_insert_attachment
But it would be wise to have a few conditional statements in place to at least check for video size and type otherwise your site would be open to abuse.
The advancedcustomfields plugin offers a great solution to creating custom forms and creating a front end editor for them
http://www.advancedcustomfields.com/docs/tutorials/creating-a-front-end-form/
Simply create your form and then template it like so.
simon blackburn is 100% correct on this. i believe this to be the easiest and most easily customized option. my day job requires me to create things like this very frequently. i am not permitted to post links to work sites publicly, but here’s an example from a personal project using gravity forms:
http://usadrifttrikes.org/contact-3/media-upload/
as simon said, also be sure to check your php.ini settings as shown in his example.
something that was left out, however, is that by using gravity forms, you will be able to easily create a post template that can use other input data to customize the post, and have the video settings already saved in the template, as well as use conditional logic if needed. then have gravity forms simply save the post as “awaiting approval”, so you’ll be able to moderate as needed. also, have it email notify you of new submission so you can easily login to moderate on demand. done-zo!
Have you considered Gravity Forms? Its ‘post fields’ features give you all the functionality for creating posts from the front-end, including being able to specify allowable file types for uploads which are then set as post attachments. It also saves you having to write all your own data validation/sanitisation routines etc.
As mentioned in this GF forum post, you’ll need to make sure your server can handle large uploads, so you may need to bump up your PHP settings as detailed here to whatever you discover is necessary for video files.
Here is the hard core coding for the simple answer. Use this code to attach a video to the post. I have given a static $listing_post_id post id equal to 7. You can use dynamical post id here. Other wise code is working and tested. Validation is not done here you can do it as you wish.
Automattic, the people behind wordpress proveides a fantastic solution for uploading and embedding videos into your wordpress blogs. Because sometime you need to convert the video with appropriate codec to make it playable from the web, and stream-able. Unfortunately it doesn’t come for free. You can access this plugin/service called VideoPress from their official site
VideoPress
Beside that, if you want to go with free alternatives then use the following plugin
Video With Links
Thanks