Intereting Posts
отличный стиль для отдельной страницы В чем смысл User-agent и Disallow в файле robots.txt в wordpress Паганирование работает локально, но не на живом сайте Правильный и безопасный способ доступа к пользовательской базе данных SQL в пользовательском файле шаблона PHP Есть ли способ опубликовать сообщения только определенной категории Как внести изменения только в некоторые элементы HTML-строки на стороне сервера? Отображение записей WP в 3 ответных столбцах is_tax () не работает в Widget Logic Как добавить заполнитель в пароль защищенного почтового ввода Проблема отображения сообщений для категории в пользовательской таксономии Отображать персонализированный тип сообщения в шаблоне Как создать список наиболее комментируемых сообщений? название, не работающее с пользовательским типом сообщения Заголовок темы в admin показывает полный путь WordPress admin WP_table_list отображается неправильно

Как поместить периоды и пространства для значений массива (мета-ключ)

Проблема:

До того, как я создал мета-боксы, я делал все по-старому, вводя пользовательские поля напрямую. Я прошел процесс заполнения идентификатора и значения вручную и нажал кнопку «Обновить». Я бы ввел все, что хотел, spaces и . (периоды), и они будут правильно применяться в моей базе данных (ERROR FREE). Однако я больше не хочу этого делать вручную, поэтому я создал мета-боксы, но так как я начал их использовать, такие специальные символы . и spaces выполняться, что приведет к пустому полю при попытке обновить сообщение, чтобы сохранить значения метаданных. Что мне не хватает и почему правила для специальных символов различаются, когда вы вручную вводите идентификатор, а не задаете его с помощью мета-боксов. В конечном счете, как я могу создать идентификаторы метаданных массива со специальными символами?

Примечание. Все мои мета-боксы неспециального характера функционируют должным образом. Таким образом, проблема НЕ в функциональности кода

Детали :

Я использую mp3-плеер плагин «mp3-jplayer», который использует пользовательские поля для отображения звука. Пользовательский формат поля (который создатель этого плагина определил, и я не могу изменить себя) …

ID = TrackNumber mp3.Artist

( обратите внимание на пробел и период выше, это то, что вызывает подачу значения метаболизма)

Значение = SongTitle @ SongURL

введите описание изображения здесь

В настоящий момент я использую мета-поля для ввода пользовательских полей следующим образом:

 $meta_boxes[] = array( 'id' => 'musicboxes', 'title' => 'Music Box Head', 'pages' => array('post'), 'context' => 'normal', 'priority' => 'low', 'fields' => array( array( 'name' => 'Musicbox 1', 'desc' => 'ID', 'id' => '1 mp3.Artist', 'type' => 'text', 'std' => '', ) ) ); 

Однако при вводе в поле ID массива «1 mp3.Artist» пользовательское поле не обновляется корректно (другими словами, остается пустым), и я думаю, что это потому, что между номером и словом «mp3» есть пробел ». Итак, как бы я мог (если это возможно) сохранить пространство, чтобы пользовательское поле функционировало правильно с помощью плагина mp3-jplayer.

Solutions Collecting From Web of "Как поместить периоды и пространства для значений массива (мета-ключ)"

Возможно, вы неправильно создали мета-поле: если ваши пользовательские имена полей не являются допустимыми именами переменных, PHP преобразует все символы, не соответствующие [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff] чтобы подчеркнуть. Причина: register_globals. Поле запроса должно работать как переменная.

Существует два способа:

  1. Назовите поле как массив: <input name="foo[TrackNumber mp3.Artist]"> . Затем просто проанализируйте foo чтобы получить значение. Это то, что делает WordPress с настраиваемым полем.

  2. Найдите TrackNumber_mp3_Artist и преобразуйте значение, прежде чем сохранять его в базе данных.

Вы пытались ускользнуть от текста до его сохранения в базе данных?

esc_textarea

 $mp3ID = esc_textarea($_REQUEST['_mp3IDBoxData']); update_post_meta(esc_attr($post_id), '_mp3IDBoxData', $mp3ID); 

Если вы все еще ищете ответ; Думаю, тебе придется обманывать руки. Во-первых, вам нужно обрезать значение, которое регистрируется в пользовательском поле Name («1 mp3.Artist»).

Например: $ id = trim ($ field ['id']); $ newID = get_post_meta ($ post-> ID, $ id, true);

Надеюсь, это поможет. Я не тестировал его, но логика, стоящая за ним, должна сделать трюк. Удачи!