私はいくつかの機能を使用してワードプレスで画像をアップロードしようとしています..
画像をアップロードする方法を見つけましたが、問題が1つあります。
ユーザーが自分の画像をアップロードするとき、wordpressが複数の異なる画像サイズを作成する場合、私は1つの画像だけが欲しいのでこれは問題です。
これはwp-conent/uploads/2010/10フォルダです。写真を見てください(これは1枚の写真ですが、wordpressは同じ画像を作成しますが、サイズが異なります)。
http://i.stack.imgur.com/fn6ab.jpg
これは私のコードです
<?php /*
Template Name: Uploading Page
*/?>
<?php get_header();
?><div class="container_12">
<div id="content">
<form id="file-form" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
<p id="async-upload-wrap">
<label for="async-upload">upload</label>
<input type="file" id="async-upload" name="async-upload"> <input type="submit" value="Upload" name="html-upload">
</p>
<p>
<input type="hidden" name="post_id" id="post_id" value="<?php echo '212';?>" />
<?php wp_nonce_field('client-file-upload'); ?>
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
</p>
<p>
<input type="submit" value="Save all changes" name="save" style="display: none;">
</p>
</form>
<?php
if ( isset( $_POST['html-upload'] ) && !empty( $_FILES ) ) {
require_once(ABSPATH . 'wp-admin/includes/admin.php');
$id = media_handle_upload('async-upload', 1199); //post id of Client Files page
unset($_FILES);
if ( is_wp_error($id) ) {
$errors['upload_error'] = $id;
$id = false;
}
if ($errors) {
echo "<p>There was an error uploading your file.</p>";
} else {
echo "<p>Your file has been uploaded.</p>";
}
}
get_sidebar();
get_footer();?>
どのようにそれを1枚の写真にすることができますか?
私のことを理解してほしい^ *私の言語> <なので
添付ファイルの作成やサイズ変更を行わずに自分でアップロードを処理するには、wp_handle_upload()を使用します。
Media_handle_upload()関数は実際に添付ファイルの投稿を作成し、wp_generate_attachment_metadataが呼び出されたときにサイズ変更プロセスが行われます。あなたがそれを呼ばないならば、サイズ変更は起こりません。
HTMLマークアップ:
<p>
<label for="custom-upload">Upload New Image:</label>
<input type="file" tabindex="3" name="custom-upload" id="custom-upload" />
</p>
<?php
/*Retrieving the image*/
$attachment = get_post_meta($postid, 'custom_image');
if($attachment[0]!='')
{
echo wp_get_attachment_link($attachment[0], 'thumbnail', false, false);
}
?>
画像をアップロードしています:
<?php
global $post; /*Global post object*/
$post_id = $post->ID; /*Geting current post id*/
$upload = $_FILES['upload']; /*Receive the uploaded image from form*/
add_custom_image($post_id, $upload); /*Call image uploader function*/
function add_custom_image($post_id, $upload)
{
$uploads = wp_upload_dir(); /*Get path of upload dir of wordpress*/
if (is_writable($uploads['path'])) /*Check if upload dir is writable*/
{
if ((!empty($upload['tmp_name']))) /*Check if uploaded image is not empty*/
{
if ($upload['tmp_name']) /*Check if image has been uploaded in temp directory*/
{
$file=handle_image_upload($upload); /*Call our custom function to ACTUALLY upload the image*/
$attachment = array /*Create attachment for our post*/
(
'post_mime_type' => $file['type'], /*Type of attachment*/
'post_parent' => $post_id, /*Post id*/
);
$aid = wp_insert_attachment($attachment, $file['file'], $post_id); /*Insert post attachment and return the attachment id*/
$a = wp_generate_attachment_metadata($aid, $file['file'] ); /*Generate metadata for new attacment*/
$prev_img = get_post_meta($post_id, 'custom_image'); /*Get previously uploaded image*/
if(is_array($prev_img))
{
if($prev_img[0] != '') /*If image exists*/
{
wp_delete_attachment($prev_img[0]); /*Delete previous image*/
}
}
update_post_meta($post_id, 'custom_image', $aid); /*Save the attachment id in meta data*/
if ( !is_wp_error($aid) )
{
wp_update_attachment_metadata($aid, wp_generate_attachment_metadata($aid, $file['file'] ) ); /*If there is no error, update the metadata of the newly uploaded image*/
}
}
}
else
{
echo 'Please upload the image.';
}
}
}
function handle_image_upload($upload)
{
global $post;
if (file_is_displayable_image( $upload['tmp_name'] )) /*Check if image*/
{
/*handle the uploaded file*/
$overrides = array('test_form' => false);
$file=wp_handle_upload($upload, $overrides);
}
return $file;
}
?>
WordPress 3.xを使用している場合は、[管理]> [設定]> [メディア]の順に選択します。
[画像サイズ]の下で、すべての値をゼロ(0)に設定し、[サムネイルを正確な寸法にトリミング]というラベルの付いたボックスのチェックを外します。
[変更を保存]をクリックすると、WPはサムネイルを作成しなくなります。
アップロード中にWordPressがサムネイル用に複数の画像を作成しないようにするために、このコードを使用します。
add_filter('intermediate_image_sizes_advanced', 'no_image_resizing');
function no_image_resizing($size) {
$ret = array();
return $ret;
}