web-dev-qa-db-ja.com

FTP経由でメディアファイルをアップロードし、それを使って添付ファイルの投稿を作成するにはどうすればいいですか?

非常に大きな動画をアップロードする必要があります。私のupload_max_filesizeはちょうど2Mに設定されているので私はそれを内蔵アップローダでアップロードすることはできません。そして私はそれをオーバーライドすることができません。私の変更を反映させる)

ブラウザベースのアップロードツールを使用しようとすると、このメッセージが表示されます。

要求されたリソース/wp-admin/media-new.phpは、POST要求を含む要求データを許可しないか、要求で提供されたデータ量が容量制限を超えています。

FTPでファイルを手動でアップロードしてメディアライブラリに表示するにはどうすればよいですか。

はい、プラグイン @Squideyes あなたを示唆しています は、まったく問題ないので、うまくいくはずです。

しかし、私はlink-to-pluginだけが答えるのが好きではないので、ここで私のものです。

ファイルをWordPressのアップロードフォルダのサブフォルダにアップロードする場合(デフォルトではwp-content/uploadsですが、簡単に変更できます)、convertよりもそこから添付ファイルへのファイルの書き込みは非常に簡単です。適切な引数で呼び出します。

コピー&ペーストの準備ができたコードはCodexで入手できます ここ そして以下にコピーされます。

<?php
// $filename should be the path to a file in the upload directory.
$filename = '/path/to/uploads/2013/03/filname.jpg';
// The ID of the post this attachment is for.
$parent_post_id = 37;
// Check the type of tile. We'll use this as the 'post_mime_type'.
$filetype = wp_check_filetype( basename( $filename ), null );
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
// Prepare an array of post data for the attachment.
$attachment = array(
  'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
  'post_mime_type' => $filetype['type'],
  'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
  'post_content'   => '',
  'post_status'    => 'inherit'
);
// Insert the attachment.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );
// Make sure that this file is included
require_once( ABSPATH . 'wp-admin/includes/image.php' );
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );

しかし、動的にファイルパスをロードに渡す方法のないそのようなコードは非常に無用ですが、スコープのために非常に単純なUIを作成することは非常に簡単です。

ワークフローは次のようになります。

  1. upload.phpページ内のフォームを出力するためにどこかにフックします。 'admin_notices' を使用すると、フォームはページの上部に印刷されます。フォームは同じページにリクエストを送信します
  2. フック 'load-upload.php' POSTリクエストをチェックし、いくつかのチェック(nonce、ユーザー機能、ファイルの存在、ファイルが既に添付されているかどうかのチェック)を行い、最後にCodexのコードを使用する添付ファイルの投稿を作成する
  3. ユーザーにフィードバックを出力するには'admin_notices'フックを使用します。どちらの場合も添付ファイルが作成されたか、問題が発生します。

このワークフローの最も難しい部分は添付ファイルを作成することです、そしてそれのためにあなたはすでにコードを持っています、私が提供したリンクであなた自身を助ける他の部分は非常に単純であるべきです。

しかし、私は上記のワークフローで言ったことを正確に実行する実用的なプラグインを使用して、3ファイルのGistを作成しました ここ

そこに私はupload.phpの中にフォームを表示/隠すためにjavascriptの数行を追加しました。

以下に、私のプラグインがどのように機能するのかを見ることができます。

Plugin that create an attachment post from a file already uploaded

5
gmazzap

このプラグインを試してみてください: http://wordpress.org/plugins/add-from-server

それはあなたがFTP経由でファイルをアップロードしてから管理者経由でそれをインポートすることを可能にします。プラグインはメディアファイルをデータベースに登録します。

0
Sam