Bonjour, je construis un thème de partage de contenu généré par l'utilisateur
Ceci est mon code pour la soumission de vidéo de front-end
Mais ce code ne permet d'ajouter que des vidéos à partir d'une URL
Comment puis-je leur permettre de télécharger des vidéos, puis de les joindre au message
Heres le 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>
Le plugin advancedcustomfields offre une excellente solution pour créer des formulaires personnalisés et créer un éditeur frontal pour eux.
http://www.advancedcustomfields.com/docs/tutorials/creating-a- front-end-form/
Créez simplement votre formulaire, puis créez un modèle.
<?php
/**
* Template Name: Page with ACF form
*/
acf_form_head();
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php the_post(); ?>
<?php acf_form( $options ); ?>
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Vous pouvez utiliser wp_insert_attachment pour télécharger un fichier vidéo dans la médiathèque, puis l’attacher à la publication nouvellement créée.
Voir http://codex.wordpress.org/Function_Reference/wp_insert_attachment
Mais il serait sage d'avoir quelques déclarations conditionnelles en place pour au moins vérifier la taille et le type de la vidéo, sinon votre site serait sujet à des abus.
simon Blackburn est 100% correct à ce sujet. Je crois que c'est l'option la plus facile et la plus facilement personnalisable. mon travail quotidien me demande de créer des choses comme celle-ci très souvent. Je ne suis pas autorisé à publier des liens vers des sites de travail en public, mais voici un exemple tiré d'un projet personnel utilisant des formulaires à gravité:
http://usadrifttrikes.org/contact-3/media-upload/
comme l'a dit simon, veillez également à vérifier vos paramètres php.ini comme indiqué dans son exemple.
quelque chose qui a été laissé de côté, cependant, c'est qu'en utilisant des formes de gravité, vous pourrez facilement créer un modèle de publication pouvant utiliser d'autres données d'entrée pour personnaliser la publication, et les paramètres vidéo déjà enregistrés le modèle, ainsi que d’utiliser une logique conditionnelle si nécessaire. Ensuite, les formulaires de gravité enregistrent simplement le message comme étant "en attente d'approbation". Vous pourrez ainsi modérer au besoin. également, envoyez-le par courriel pour vous informer de la nouvelle soumission afin que vous puissiez facilement vous connecter pour modérer à la demande. fait-zo!
Avez-vous envisagé formes de gravité ? Ses fonctionnalités de "champs de publication" vous offrent toutes les fonctionnalités permettant de créer des publications à partir du serveur frontal, notamment la possibilité de spécifier des types de fichiers autorisés pour les téléchargements, qui sont ensuite définis en tant que pièces jointes. Cela vous évite également d'avoir à écrire toutes vos propres routines de validation/nettoyage des données, etc.
Comme mentionné dans ce GF message de forum , vous devez vous assurer que votre serveur peut gérer les envois volumineux. Vous devrez peut-être alors augmenter vos PHP paramètres comme détaillé ici à tout ce que vous découvrez est nécessaire pour les fichiers vidéo.
Voici le code de base pour la réponse simple. Utilisez ce code pour joindre une vidéo à la publication. J'ai donné un identifiant de publication statique $ listing_post_id égal à 7. Vous pouvez utiliser un identifiant de publication dynamique ici. Autre code sage fonctionne et testé. La validation n'est pas terminée ici, vous pouvez le faire comme vous le souhaitez.
<?php
if (isset($_POST['uploadvideo'])) {
if ( ! function_exists( 'wp_handle_upload' ) ) {
require_once( ABSPATH . 'wp-admin/includes/image.php' );
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' ); }
$uploadedfile = $_FILES['photoContent'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if ( $movefile )
{
$image_url = $movefile["url"];
$upload_dir = wp_upload_dir();
$image_data = file_get_contents($image_url);
$filename = basename($image_url);
if(wp_mkdir_p($upload_dir['path']))
$file = $upload_dir['path'] . '/' . $filename;
else
$file = $upload_dir['basedir'] . '/' . $filename;
file_put_contents($file, $image_data);
$wp_filetype = wp_check_filetype($filename, null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => sanitize_file_name($filename),
'post_content' => '',
'post_status' => 'inherit'
);
$listing_post_id = 7 ; //your post id to which you want to attach the video
$attach_id = wp_insert_attachment( $attachment, $file, $listing_post_id);
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );
/*end file uploader*/
}
}
?>
<form method ="post" action="" name="uploadvideo" enctype="multipart/form-data">
<label for="ug_photo">Your Video Files
<input type="file" value="" name="photoContent" id="ug_photo" class="" multiple="multiple"></label>
<label for="ug_submit_button">
<input type="submit" value="uploadvideo" name="uploadvideo" id="ug_submit_button" class="btn"></label>
</form>