[WordPress] WordPress のフロント エンドのアップロードの問題

スポンサーリンク

Question

フロント エンドでは、ガラス張りのテーマから

upload_user_file()

を使用してファイルをアップロードするフォームを作成され、すべての画像は素晴らしいワードプレスのメディア ライブラリに格納されます (よく思えるよう).

だから

test.jpg

という名前のファイルをアップロードするときその相対的なサムネイルが作成され、メディア ライブラリ。 テスト 150×150.jpg テスト 300×225.jpg テスト 1024×768.jpg で目に見える

私が持っている問題は、メディア ライブラリからこの画像を削除するとき。作成されたサムネイルのみが削除され、

test.jpg

は、アップロード先のフォルダーにそのまま残ります。

test.jpg

を含む場合は、メディア ライブラリから直接ファイルをアップロードし、すべてのファイルを削除が削除されます

Heres に値をデータベースに格納し、また、medialibrary にファイルをアップロードするコード。使用する別のワードプレスの機能はありますか?私は推測

upload_user_file()

はイメージ データを保存しないで正しくデータベースで?

global $wpdb;
global $post;

//$table = 'wp_verk1_project'; //$post_slug=$post->post_name;
$table = $wpdb->prefix . "project_name_" . $post_slug=$post->post_name;
$data = array(
    'contributorname' => $_POST['yourname'],
    'email' => $_POST['email'],
    'telephone' => $_POST['telephone'],
    'description' => $_POST['description'],
    'date' => date('Y-m-d'),
    'time' => date('H:i:s'),
    'upload' => upload_user_file($_FILES['file']),
    'upload2' => upload_user_file($_FILES['file2']),
    'upload3' => upload_user_file($_FILES['file3']),
    'upload4' => upload_user_file($_FILES['file4']),
    'upload5' => upload_user_file($_FILES['file5']),
    'rate' => '0'
);
$format = array(
    '%s',
    '%s'
);

$success = $wpdb->insert($table, $data, $format);

if ($success) {
    header("Location: " . get_bloginfo('url') . "/thank-you/");
    exit();
}

edit_user_file():

function upload_user_file( $file = array() ) {

    require_once( ABSPATH . 'wp-admin/includes/admin.php' );

    $file_return = wp_handle_upload( $file, array('test_form' => false ) );

    if( isset( $file_return['error'] ) || isset( $file_return['upload_error_handler'] ) ) {
        return false;
    } else {

        $filename = $file_return['file'];

        $attachment = array(
            'post_mime_type' => $file_return['type'],
            'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
            'post_content' => '',
            'post_status' => 'inherit',
            'guid' => $file_return['url']
        );

        $attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );

        require_once (ABSPATH . 'wp-admin/includes/image.php' );
        $attachment_data = wp_generate_attachment_metadata( $attachment_id, $filename );
        wp_update_attachment_metadata( $attachment_id, $attachment_data );

        if( 0 < intval( $attachment_id ) ) {
            return $attachment_id;
        }
    }

    return false;
}

かしこ Johan

の答え

私自身の質問を解決するために管理します

WordPress コアファイルに掘った

Ireplaced、次の行:

$attachment_id = wp_insert_attachment( $attachment, $file_return['url'] );

この:

$attachment_id = wp_insert_attachment( $attachment, $filename );

wp_postmeta でアップロードを meta_value に設定された完全な url ( http://sitenamen.com/wp-content/upload/2014/12/file.jpg) 中にこのような格納する必要があります: 2014/12/file.jpg

今、すべてのファイルが削除されます

http://stackoverflow.com/questions/27257856/wordpress-frontend-upload-issue

スポンサーリンク

Leave a Reply