我不太确定如何解释我的问题,所以如果我不清楚什么,请告诉我。
我在我的前端帖子表单上有一个多文件上传输入,可以将文件上传到我指定的文件夹,并创建附件id等。
if (!empty($_FILES[\'vidPix\'][\'tmp_name\'][0])) {
$i = 1;
$files = $_FILES[\'vidPix\'];
foreach ($files[\'name\'] as $key => $value) {
if ($files[\'name\'][$key]) {
$file = array(
\'name\' => $files[\'name\'][$key],
\'type\' => $files[\'type\'][$key],
\'tmp_name\' => $files[\'tmp_name\'][$key],
\'error\' => $files[\'error\'][$key],
\'size\' => $files[\'size\'][$key]
);
$_FILES = array("sight" . $i => $file);
add_filter( \'upload_dir\', \'wpse_141088_upload_dir\' );
add_filter(\'intermediate_image_sizes_advanced\', \'no_image_resizing\');
$mfile = wp_handle_upload($files, $upload_overrides );
$newvidPix = sight("sight" . $i, $v_Id);
remove_filter( \'upload_dir\', \'wpse_141088_upload_dir\' );
remove_filter(\'intermediate_image_sizes_advanced\', \'no_image_resizing\');
if ($i == 1) {
update_post_meta($v_Id, \'_thumbnail_id\', $newvidPix);
}
add_post_meta($v_Id, \'vid_pix\', $newvidPix, false);
}
$i++;
}
}
上载文件时,我会将其显示在前端-
<div id="pic-con">
<?php
if (!empty($vid_pix)) {
foreach ($vid_pix as $vP) {
$filename = basename( get_attached_file( $vP ));
echo \'<div class="photo-upload-box">\';
echo \'<img src="\' . wp_get_attachment_thumb_url($vP) . \'" alt=""/>\';
echo \'<input type="hidden" class="pic_value" value="\' . $filename . \'" />\';
echo \'<input type="hidden" name="\'.$vP.\'" class="orders" />\';
echo \'</div>\';
}
}
?>
</div>
我使用jquery对每个div进行排序,以便更改图像的显示顺序-
example of how the sorting worksfunction updateIndexes() {
$(\'#pic-con .orders\').each(function(index) {
$(this).val(index + 1);
});
}
使用订单号更新隐藏输入-
现在,我尝试使用订单号与图像一起保存,以便在页面加载或将值回显到$vid\\u pix元键等时始终按该顺序显示图像。
例如-$vid\\U pix键包含5个图像:file1, file2, file3, file4, file5
及其相应的订单号-1, 2, 3, 4, 5
但如果我用前端的div重新排列顺序-
1- file5, 2- file4, 3- file2, 4- file1, 5- file3
我如何将其按此顺序保存到我的元密钥中?我遇到了php函数ksort,但我不太确定如何应用于我的情况。
EDIT
好的,通过在每个附件id中添加一个自定义字段,我似乎离我的最终目标越来越近。自定义字段将存储订单编号ie 1。
完整代码见我的另一个问题-here添加\\u操作(“init”,“my\\u save\\u vid\\u pix\\u data”);
function my_save_vid_pix_data() {
if ( ! isset( $_POST[\'attachments\'], $_POST[\'v_Id\'] ) ) {
return;
}
$atts = (array) $_POST[\'attachments\'];
$post_id = absint( $_POST[\'v_Id\'] );
$vid_pix = get_post_meta($post_id, \'vid_pix\', false);
foreach ((array) $vid_pix as $vP) {
if ( ! isset( $atts[ $vP ] ) || ! is_array( $atts[ $vP ] ) ) {
continue;
}
update_post_meta($vP, \'photo_time\', $atts[ $vP ][\'photo_time\']);
update_post_meta($vP, \'photo_order\', $atts[ $vP ][\'photo_order\']);
}
}
所以现在我需要知道如何对输出进行排序(如果可能的话,还要对db进行排序)。类似于-
if (!empty($vid_pix)) {
foreach ($vid_pix as $vP) {
$filename = basename( get_attached_file( $vP ));
$Pt = get_post_meta($vP, \'photo_time\', true);
$Por = get_post_meta($vP, \'photo_order\', true);
// SOMETHING LIKE THIS
foreach ($vP SORT USING $Pt) {
echo \'IMAGES IN ORDER ACCORDINGLY\'
编辑2
usort()
我尝试使用usort函数,但现在它没有显示任何内容-
if (!empty($vid_pix)) {
foreach ($vid_pix as $vP1) {
$filename = basename( get_attached_file( $vP1 ));
$Pt = get_post_meta($vP1, \'photo_time\', true);
$Por = get_post_meta($vP1, \'photo_order\', true);
function cmp($a, $b)
{
if ($a[\'photo_order\'] == $b[\'photo_order\']) {
return 0;
}
return ($a[\'photo_order\'] < $b[\'photo_order\']) ? -1 : 1;
}
usort($vP1, "cmp");
foreach ($vP1 as $vP) {