WordPress の cms を使用していますが、カスタム フォームについてサポートが必要です。ユーザーがフロントエンドから投稿できるようにします。いくつかのフィールドと画像アップロード フィールドがあります。これは 2 つの部分からなるフォームで、最初の部分でデータを送信し、2 番目のステップで送信したばかりのデータのプレビューを取得します。これは submit の後に発生することに注意してください。
フォームコード:
<?php
global $wpdb;
$this_page = $_SERVER['REQUEST_URI'];
$page = $_POST['page'];
if ( $page == NULL ) { ?>
<form method="post" action="">
<div>LOCATION : <input type="text" name="location"/></div>
<div>DESCRIPTION : <textarea id="details" cols="80" rows="10 maxlength="600" name="details" rows="20"></textarea></div>
<div>UPLOAD IMAGE : <input type="file" name="loc-image" id="loc-image" tabindex="25" /></div>
<input type="hidden" value="1" name="page" />
<input type="hidden" name="action" value="post_action" />
<input type="submit" name="submit" value="PROCEED"/>
</form>
<?php
} else if ( $page == 1 ) { ?>
<?php
$location=$_POST['location'];
$description=$_POST['details'];
$photo=$_POST['loc-image'];
echo 'Location : ' . $location . '</br>';
echo 'Details : ' . $description . '</br>';
echo 'Image : ' . $photo . '</br></br>';
?>
<?php
}
?>
問題: 最後のステップで、現在のコードは送信されたすべてのデータを画像名とともに表示できますが、画像は表示できません。この時点で画像を表示したいと思います。基本的に、最後のステップはプレビュー ページのようなものにする必要があります。
以下に示すコードはフォームを処理します。特に、添付ファイルの挿入に役立つコードの特定の部分に注意を向けたいと思います。解決策を考案するのに役立つ可能性があります。
フォーム プロセッサ :
if( 'POST' == $_SERVER['REQUEST_METHOD'] && $_POST['action'] == "post_action") {
//some error checking done here
//set vars
$location = $_POST['location'];
$description = $_POST['details'];
if (empty($error)) {
$new_post = array( //insert form inputs, set var and define array
'post_title' => $location,
'post_content' => $description,
'post_status' => 'draft',
'post_type' => 'post',
// assigning tags and categoris is no issue
);
$pid = wp_insert_post($new_post);
//attachment helper function
function insert_attachment($file_handler,$post_id,$setthumb='false') {
if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK){ return __return_false();
}
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$attach_id = media_handle_upload( $file_handler, $post_id );
//set post thumbnail
if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id);
return $attach_id;
}
//INSERT OUR MEDIA ATTACHMENTS
if ($_FILES) {
foreach ($_FILES as $file => $array) {
$newupload = insert_attachment($file,$pid);
// $newupload returns the attachment id of the file that
// was just uploaded. Do whatever you want with that now.
}
} // end of attachment statement
}
}
脚注 : 問題を除けば、コードは大幅にカスタマイズされており、私の wp-install でうまく機能します。したがって、コード内の二次的な要因は無視してください。検証、セキュリティなど