web-dev-qa-db-ja.com

フロントエンドから投稿するアップロードされたビデオを添付する方法

こんにちは、ユーザーが作成したコンテンツ共有テーマを作成しています

これはフロントエンドからのビデオ投稿のための私のコードです

しかし、このコードではURLから動画を追加することしかできません

動画をアップロードして投稿に添付する方法を教えてください。

コードがあります。

 <?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>
2
vaibhav

advancedcustomfields プラグインは、カスタムフォームを作成し、それらのフロントエンドエディタを作成するための優れたソリューションを提供します。

http://www.advancedcustomfields.com/docs/tutorials/creating-a-front-end-form/ /

単にあなたのフォームを作成し、それからテンプレートを作成してください。

<?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(); ?>
1
Blowsie

Wp_insert_attachmentを使用してビデオファイルをメディアライブラリにアップロードしてから、新しく作成した投稿に添付することができます。

http://codex.wordpress.org/Function_Reference/wp_insert_attachment を参照してください。

ただし、少なくともビデオのサイズと種類を確認するには、条件付きステートメントをいくつか用意するのが賢明でしょう。そうしないと、サイトが悪用される可能性があります。

1
Jason

サイモン・ブラックバーンはこれについて100%正しいです。これが最も簡単で最も簡単にカスタマイズできるオプションだと思います。私の仕事では、このようなものを非常に頻繁に作成する必要があります。職場へのリンクを公開することは許可されていませんが、重力フォームを使用した個人プロジェクトの例を次に示します。

http://usadrifttrikes.org/contact-3/media-upload/

サイモンが言ったように、彼の例に示すようにphp.iniの設定も確認してください。

ただし、重力フォームを使用すると、他の入力データを使用できる投稿テンプレートを簡単に作成できます投稿をカスタマイズし、ビデオ設定をテンプレートに既に保存し、必要に応じて条件付きロジックを使用します。重力フォームを使用すると、投稿を「承認待ち」として保存するだけなので、必要に応じてモデレートできます。また、必要に応じてモデレートするために簡単にログインできるように、新しい送信をメールで通知します。できたぞ!

1
do7d

あなたは 重力フォーム を考えましたか?その「投稿フィールド」機能はフロントエンドから投稿を作成するためのすべての機能を提供します。これにはアップロードのために許容されるファイルタイプを指定することができます。それはまたあなたがあなた自身のすべてのデータバリデーション/サニタイズ処理ルーチンなどを書かなければならないのを節約します。

this GFフォーラム投稿 で述べたように、サーバーが大量のアップロードを処理できることを確認する必要があるので、PHP設定を増やす必要があるかもしれません。 ここに詳述 _あなたが発見したものは何でもビデオファイルに必要です。

0

これが簡単な答えのためのハードコアコーディングです。このコードを使用してビデオを投稿に添付します。静的な$ listing_post_idの投稿IDを7にしました。動的な投稿IDをここで使用できます。他の賢いコードは動作しテストされています。検証はここでは行われませんが、あなたは望むようにそれを行うことができます。

<?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>
0
Vijay Lal