uodate_optionでDBの上書きができない。
-
以前、こちらで質問させていただいていたのですが、ちょっと問題がかわっておきたので
オリジナル画像アップローダプラグインを作成したい
改めて質問させてください。先にやりたいことを記載します。
1.オリジナルの画像アップローダプラグインで画像をする
2.アップロードした画像はプラグインと同じディレクトリ内に保存する
3.アップロードした画像のパスをupdate_optionでDBに登録する。1.2ともにOKなのですが、3だけうまくいきません。
下記にソース記載します。function image_upper_setting(){
$dir = plugin_dir_path(__FILE__);
if($_SERVER[“REQUEST_METHOD”]==”POST” && !empty ($_POST)){
$action = $_POST[“action”];
if($action == “upload”){
$pattern = “/^[a-z0-9A-Z\-_]+\.[a-zA-Z]{3}$/”;
$upfile = $_FILES[“image”][“name”];
if(!empty ($upfile)){
if(!preg_match($pattern,$upfile)){
$er[“jp”] = “アップロードエラー:”;
}
$ext=substr($upfile,-3);
if($ext != “jpg” && $ext != “png”){
$er[“image”] = “アップロードエラー”;
}
}else{
echo “ファイルをアップしてください”;
}
if(empty ($er)){
move_uploaded_file($_FILES[“image”][“tmp_name”], $dir.$upfile);
}
}
}
?>
<form action=”” method=”post”>
<table>
<?php
$dir_url = plugin_dir_url(plugin_basename( __FILE__ ));
$dir = plugin_dir_path(__FILE__);
$filelist = scandir($dir);
foreach($filelist as $file):
if(stristr($file, jpg) || stristr($file, png) && !is_dir($file)):
$filepath = $dir_url.$file;
?>
<tr>
<td><img id=”para_img01″ class=”para_images” src=”<?php echo $filepath; ?>” width=”150″ height=”150″ alt=”Not Image” /></td>
</tr>
<?php endif; endforeach; ?>
</table>
<p><input type=”submit” value=”画像を削除する” /><?php echo $error?></p>
<input type=”hidden” name=”action” value=”delete” />
</form>
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”image” />
<input type=”hidden” name=”action” value=”upload” />
<input type=”hidden” name=”dbup” value=”<?php echo $filepath; ?>”/>
<?php
update_option(‘exsample’,$_POST[‘dbup’]);
?>
<input type=”submit” value=”アップロードする” /><div class=”errors”>
<?php if(!empty ($er[“jp”])) echo $er[“jp”]; ?>
<?php if(!empty ($er[“image”])) echo $er[“image”]; ?>
</div>
<?php wp_nonce_field(); ?>
<?php check_admin_referer(); ?>
</form>
<?php
}具体的にはアップロードした画像をその場で表示して、DBにパス(URL)を格納するという処理なんですが、DBにパス(URL)を格納部分がどうしても空の値がいってしまいます。
$filepath = $dir_url.$file;(画像への絶対パス)
にて絶対パスにしています。$filepathにて画像の表示はできており、ブラウザでソースをみても
input name=”dbup”のvalueに問題なく表示されています。・試したこと
————————————
・<input type=”hidden” name=”dbup” value=”<?php echo $filepath; ?>”/>の
<input type=”hidden” name=”dbup” value=”テスト”/>にかえてみました。
これはOKでした。
・<?php echo gettype($filepath); ?>で型を出力>stringなので問題ないかと。なぜ、DBにだけ登録できないのか不思議です
ご教授いただけましたら助かります。また、別の対処策として$filepathをテンプレート内にて(index.php)にて使用する方法などもあれば教えていただきたいです。
よろしくお願いいたします!!
- トピック「uodate_optionでDBの上書きができない。」には新たに返信することはできません。