web-dev-qa-db-ja.com

コメント付きの画像をアップロードする

編集:私はついに正しい答えを得た。興味を持っているすべての人のためにこの記事の下に私自身の答えを見てください。

数日探して何度も何度も試した後、私は本当に動けなくなりました。私は自分のウェブサイトでコメントフォームを使ってカスタマーエクスペリエンスを収集するクライアントです。すべてのコメントはカスタマーレビューとして表示されます。ここまでは順調ですね。

しかし、同社は旅行に多大な労力を費やしているので、レビューをしながら最大5つの画像をアップロードするよう顧客に指示する必要があります。

それで私がする必要があるのは、顧客がコメントフォームに記入されたメディアと一緒にメディアをアップロードできるようにする方法を見つけることです。アップロードされた破損した画像などがある可能性があるので、私はそれが一種の危険であることを知っています。それでも、私はそれを達成したいと思います。

多くのことを試してみましたが、私が何度も何度も動けなくなるのは、コメントフォームとともに投稿されている非ログインユーザーのためのファイルアップロード処理です。

任意の考えは非常に高く評価されます!

2
Dennis Hunink

編集:私は解決策を思いついた友人の助けを借りて。興味のある人のために:私の場合comment_postで、カスタム投稿タイプを使う。それからこのような画像をアップロードしてください。

$new_post = array(
'post_title'    => $title,
'post_content'  => $comment,
    'post_status'   => 'pending',// Choose: publish, preview, future, draft, etc.
    'post_type' => 'comments_post'  // Use a custom post type
);
//save the new post and return its ID
$pid = wp_insert_post($new_post); 
//Upload the file(s)
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) {
    //Check if the $_FILES is set and if the size is > 0 (if =0 it's empty)
    if(isset($_FILES[$file]) && $_FILES[$file]['size']>0){
    if ($_FILES[$file]['error'] !== UPLOAD_ERR_OK) {
    echo '<div class="allert alert-error"><p>Upload error : ' . $_FILES[$file]['error'] . '</p></div>';
    $upload = false;
}else{
$upload = true;
}
if($upload == true){
    $attach_id = media_handle_upload( $file, $pid );
}
}
 }   
                                }//End if '$_FILES'

                            }//End if errornumbers
2
Dennis Hunink