我有这段代码,但由于某种原因,没有添加逗号来分隔数组元素。我在俯瞰什么?
$imgid = array();
foreach ( $attachments as $attachment ) {
$imgid[] = $attachment->ID;
// echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
}
$string = implode(',', $imgid);
echo $string;
上面的foreach代码位于更大的foreach语句中:
foreach ($fileslist as $file) {
if( $file === '.' || $file === '..' ) {
continue;
}
$file = file_get_contents( $post_dir . "/" . $file);
$filetype = "image/jpeg";
$filename = "remote_filename_". $i .".jpg";
$i++;
xmlrpc_set_type($file,'base64'); // <-- required!
$params = array($blogid,$username,$password,
array('name'=>$filename,'type'=>$filetype,'bits'=>$file,'overwrite'=>false));
$request = xmlrpc_encode_request('wp.uploadFile',$params);
$result = go($request,$rpcurl);
print_r($result);
$attachments = get_posts( array(
'post_type' => 'attachment',
'posts_per_page' => 1,
'post_status' => null,
'post_mime_type' => 'image'
));
$imgid = array();
foreach ( $attachments as $attachment ) {
$imgid[] = $attachment->ID;
// echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
}
$comma_separated = implode(",", $imgid);
echo $comma_separated;
}
基本上,它的作用是将目录中的每个图像上传到WordPress。每个图像都有一个附件ID,我需要将每个附件ID保存为字符串,每个ID用逗号分隔。
编辑:Simon Robb为我提供了正确的答案。这是更新和最终代码:
foreach ($fileslist as $file) {
if( $file === '.' || $file === '..' ) {
continue;
}
$file = file_get_contents( $post_dir . "/" . $file);
$filetype = "image/jpeg";
$filename = "remote_filename_". $i .".jpg";
$i++;
xmlrpc_set_type($file,'base64'); // <-- required!
$params = array($blogid,$username,$password,
array('name'=>$filename,'type'=>$filetype,'bits'=>$file,'overwrite'=>false));
$request = xmlrpc_encode_request('wp.uploadFile',$params);
$result = go($request,$rpcurl);
print_r($result);
$attachments = get_posts( array(
'post_type' => 'attachment',
// 'posts_per_page' => 1,
'post_status' => null,
'post_mime_type' => 'image'
));
$imgid = array();
foreach ( $attachments as $attachment ) {
$imgid[] = $attachment->ID;
// echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
}
echo "<br />";
$comma_separated = implode(",", $imgid);
}
echo $comma_separated;
答案 0 :(得分:0)
你的逻辑是合理的应该按预期工作。但是,如果没有看到更大的代码库,很难说出发生了什么。我唯一的猜测是游戏中有一个更大的循环。你的$imgid
的启动每次重复都会重置数组:
$imgid = array();
您是否可以将逻辑中的数组init置于更高的位置?如果是这样,试试看看会发生什么。并且可能使用$attachment->ID
分配索引键会有所帮助:
$imgid = array();
foreach ( $attachments as $attachment ) {
$imgid[$attachment->ID] = $attachment->ID;
// echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
}
答案 1 :(得分:0)
我并非100%明确您的代码的工作方式,但目前$file
循环中的每个$filelists
只返回一个附件,因为{{1} } 'posts_per_page' => 1
中的参数。因此get_posts
变量只有一个元素,因此$imgid
没有两个元素可以放置逗号。
您看到的输出实际上是为implode
的每个循环输出的ID
。
如果您删除了$filelist
参数,那么您将在'posts_per_page' => 1
中拥有完整的附件数组,并且它应该可以正常工作。