所以我的foreach循环只运行一次有问题。
我有$ file_url变量的以下数据。
$file_url = "http://www.somedomain.com/12355/1.jpg,http://www.somedomain.com/12355/2.jpg,http://www.somedomain.com/12355/3.jpg,http://www.somedomain.com/12355/4.jpg";
现在我的代码看起来像这样:
function fetch_media($file_url,$vin,$cacheid) {
require_once(ABSPATH . 'wp-load.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
global $wpdb;
if(!$vin) {
$vin = $cacheid;
}
$vin = $vin . '/';
//directory to import to
$artDir = "wp-content/uploads/vehiclephotos/$vin";
//if the directory doesn't exist, create it
if(!file_exists(ABSPATH.$artDir)) {
mkdir(ABSPATH.$artDir);
}
$file_url = explode(",", $file_url);
$gallery_images = array();
foreach ($file_url as $url) {
//rename the file... alternatively, you could explode on "/" and keep the original file name
$filename = array_pop(explode("/", $url));
if (@fclose(@fopen($url, "r"))) { //make sure the file actually exists
copy($url, ABSPATH.$artDir.$filename);
$siteurl = get_option('siteurl');
$file_info = getimagesize(ABSPATH.$artDir.$filename);
//create an array of attachment data to insert into wp_posts table
$artdata = array();
$artdata = array(
'post_author' => 1,
'post_date' => current_time('mysql'),
'post_date_gmt' => current_time('mysql'),
'post_title' => $filename,
'post_status' => 'inherit',
'comment_status' => 'closed',
'ping_status' => 'closed',
'post_name' => sanitize_title_with_dashes(str_replace("_", "-", $filename)),
'post_modified' => current_time('mysql'),
'post_modified_gmt' => current_time('mysql'),
'post_type' => 'attachment',
'guid' => $siteurl.'/'.$artDir.$filename,
'post_mime_type' => $file_info['mime'],
'post_excerpt' => '',
'post_content' => ''
);
$uploads = wp_upload_dir();
$save_path = $uploads['basedir'].'/vehiclephotos/'.$vin.$filename;
//insert the database record
$attach_id = wp_insert_attachment($artdata, $save_path);
//generate metadata and thumbnails
if ($attach_data = wp_generate_attachment_metadata( $attach_id, $save_path)) {
wp_update_attachment_metadata($attach_id, $attach_data);
}
array_push($gallery_images,$attach_id);
}
}
return serialize($gallery_images);
}
所以我得到的输出是序列化数组:
a:1:{i:0;i:103525;}
哪个好,但是因为有4个数组项,它应该循环4次并给我带有4个attachment_id的序列化数据。其中的所有其他代码运行良好一次,它从URL下载图像,它重命名它并创建照片的所有缩略图大小。
知道我做错了吗?
答案 0 :(得分:0)
排除故障时,请移除@-operator
以查看您获得的错误。所以:
if (@fclose(@fopen($url, "r"))) { //make sure the file actually exists
变为:
if (fclose(fopen($url, "r"))) { //make sure the file actually exists
您可以将此行简化为:
if (file_exists($url)) {
答案 1 :(得分:0)
该代码没问题。因此,您的输入很可能是错误的。与其他人一样,您发布的代码并不表示您正在记录<header>
<div>
<img id="logo" src="http://arkelectronics.ca/arkLogo.png" alt="Logo">
<h1>ARK Electronics</h1>
</div>
</header>
header {
width: 100%;
text-align:center;
border-bottom:2px solid orange;
}
header>div{width:600px;margin:0 auto;}
。我猜想<article>
数组有四个项目的陈述实际上是不真实的。
答案 2 :(得分:0)
{{1}}
在foreach循环中使用try和catch它会继续运行,你可以看到foreach循环中的错误是什么错误
答案 3 :(得分:0)
看起来这个问题并不像有人提到的那样循环。我在第一张图片后将文件复制到我的服务器时收到错误...这完全是一个完全不同的问题。
感谢您的指导,让我找到了错误。