私はメディアを添付するための機能を持たない既存のフォーラムのようなプラグインを適応させようとしています。
このプラグインはカスタム投稿タイプとして機能するため、投稿に画像を添付するのと同じくらい簡単です。
私はどんなファイルタイプではなく画像を添付することについてだけ心配しています、しかしプラグインはwp_editor
を使います、そしてそのようなものとして解決策はそれと何らかの形で統合するべきです。ソリューションが画像のサムネイルをtinyMCEテキストエリアに挿入することができる限り、私はtinyMCEボタンの作成について過度に悩んではいません。
注意してください、私は管理領域よりもむしろ私のウェブサイトのフロントエンドに言及しています。
絶対に理想的な状況では、私はこのシナリオが起こることを望みます:
しかしながら、私はtinyMCEボタンが周辺機器になることを嬉しく思います - 「ファイルアップロード」ボックスが非常に簡単であれば、それで大丈夫です。
私は遭遇しました このリンク しかし、私はt'interwebsでWordPressの記事を読むことに不安を感じています。
前もって感謝します、
私は最も簡単な方法だと思います。すでにwp_editor
関数を使用しているのはWP_Editorインスタンスにメディアボタンを含めることになるでしょう - このようにしてネイティブの関数( "Insert into post"ボタンを含む)を構築します無料で。
どのようにこれを行うかは明らかにあなたが作業しようとしているプラグインに依存します。しかし、これであなたは始められるはずです。このようなコードをページテンプレートに含めてエディタを表示すると、ページにエディタが表示されます。これをフォームに含めて結果を処理することは、ここでは詳述しない別のステップです。
// Define the global variable $post_id - this is used by the media uploader
// to attach uploads to a specific post (so that the uploader can see uploads
// attached to this post and not others)
global $post_id;
$post_id = $post->ID; // should be the ID of the new post created
// Now filter the list of tabs available in the media editor.
// Remove everything but the "From Computer" option.
add_filter( 'media_upload_tabs', 'wpse42068_remove_additional_tabs' );
function wpse42068_remove_additional_tabs( $_default_tabs ) {
return array( 'type' => __('From Computer') );
}
// Now just include the WP_Editor. See
// http://codex.wordpress.org/Function_Reference/wp_editor
// for settings available
wp_editor( '', 'posteditor', array( 'media_buttons' => true ) );
投稿IDを定義することはおそらく非常に重要な部分です。これをどのように行うかは、機能のロジックによって異なります。私はお勧めします:
たぶんこれはあなたの理想的な解決策ではありませんが、それは一撃の価値があります。グーグルでそれを得たが、残念ながら私はURLを忘れていました。取り付け部分は@goldenapples記事のものと似ています。
これが基本機能です。
function attach_uploads($uploads,$post_id = 0){
$files = rearrange($uploads);
if($files[0]['name']==''){
return false;
}
foreach($files as $file){
$upload_file = wp_handle_upload( $file, array('test_form' => false) );
$attachment = array(
'post_mime_type' => $upload_file['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($upload_file['file'])),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $upload_file['file'], $post_id );
$attach_array[] = $attach_id;
require_once(ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $upload_file['file'] );
wp_update_attachment_metadata( $attach_id, $attach_data );
}
return $attach_array;
}
Ajax関数
add_action('wp_ajax_attach_file', 'process_attach_file');
function process_attach_file() {
// add some filter and validation on the id and the files here
$post_id = $_POST['post_id'];
$files = $_FILES['profile-picture'];
// insert attachment
$attached_files = attach_uploads($files,$post_id);
// set the first file as post thumbnail
if($attached_files){
set_post_thumbnail( $post_id, $attached_files[0] );
}
// now all you have to do is set the response data
}
マークアップ
<form id="upload-form" action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" class="form" enctype="multipart/form-data" >
<label for="profile-picture">Foto Profil</label>
<input type="file" id="profile-picture" name="profile-picture[]" size="40" multiple />
<?php wp_nonce_field( // intention nonce); ?>
<input name="action" value="attach_file" type="hidden">
<input name="post_id" value="12" type="hidden">
</form>
この助けを願っています