Метабокс с несколькими полями, добавленными пользователем и полем загрузки
Я пытаюсь создать систему, в которой пользователь может добавлять в сообщение столько полей, сколько ему нужно. Я использую код из этого потока. Все работает нормально, за исключением того, что я не могу заставить свою загрузку работать.
Вот код, который я добавил внутри цикла foreach в функции dynamic_inner_custom_box()
:
<input class="upload_file" type="text" size="45" id="items[%1$s][picture]" name="items[%1$s][picture]" value="%6$s" />
<input class="upload_button button" type="button" value="Upload File" />
<input class="upload_file_id" type="hidden" id="items[%1$s][picture]_id" name="items[%1$s][picture]_id" value="%6$s" />
Значение %6$s
равно item['picture']
ofc. Я не понимаю, как это работает. Есть два поля для загрузки - .upload_file
и .upload_file_id
. Если я прав, мне нужно добавить _id
к моему имени .upload_file
и сохраните его как имя .upload_file_id
. Проблема в том, что когда я выбираю какое-либо изображение из толстого поля загрузки, оно не помещает ссылку в мое поле ввода. Я уже некоторое время играю, и мне удалось установить эту ссылку, играя с именами/идентификаторами, но я не смог сохранить данные. Что неверно в моем коде? Нужно ли мне как-то расширить функцию сохранения?
@редактировать После изменения кода на этот:
<input class="upload_file" type="text" size="45" id="picture_%1$s" name="picture_%1$s" value="%6$s" />
<input class="upload_button button" type="button" value="Upload File" />
<input class="upload_file_id" type="hidden" id="picture_%1$s_id" name="items[%1$s][picture]" value="%6$s" />
Я наконец-то что-то сохранил и могу разместить ссылку на вложение в нужном месте на мгновение. Когда я выбираю картинку, ссылка вставляется туда, где она должна быть, но после сохранения в базе данных сохраняются только некоторые номера (возможно, идентификатор вложения?).
1 answers
Вот как я это сделал. Никаких изменений в функции сохранения не требуется. Я пытался сохранить данные из обоих полей сразу, вот почему это не сработало.
<input class="upload_file" type="text" size="45" id="picture_%1$s" name="picture_%1$s" value="%6$s" />
<input class="upload_button button" type="button" value="Upload File" />
<input class="upload_file_id" type="hidden" id="picture_%1$s_id" name="items[%1$s][picture]" value="%7$s" />
Значение, хранящееся в .upload_file_id
, является идентификатором вложения (%7$s
== item['picture']
).
Значение, отображаемое в .upload_file
(%6$s
) является wp_get_attachment_image_src
таким образом:
$img = wp_get_attachment_image_src($item['picture']);
$img = $img[0];
, А затем мы устанавливаем %6$s
равным $img
. Таким образом, в базе данных хранится только идентификатор вложения, и мы показываем ссылку с помощью функции WordPress.