Intereting Posts
Бета-версия WordPress 4.0 – как изменить URL-адрес ссылки в RSS-каналах Динамический пул страниц для пользовательских таксономий? Показать сообщения в стиле, аналогичные сообщениям по умолчанию Неверный URL-адрес wp-admin Триггерный сектор связи с настраиваемым полем Как указать пользователей и их количество сообщений? Есть ли решение для автоматической публикации данных на WP-запись из базы данных wp_publish_post для сохранения черновиков, постоянных ссылок Как предотвратить отображение таблицы стилей в файле header.php или footer.php? Отменить выделение пункта меню в блоге, когда выбран пункт меню категории Как получить все поля Buddy PressProfile без идентификатора пользователя Как изменить редактор TinyMCE VisualComposer только для определенного короткого кода Категории фильтров при обновлении Объединение запросов с разными аргументами для типа сообщений Автогенерируемые сообщения не отображаются в бэкэнде (но считаются!)

Как отключить HTML-объекты в настраиваемом мета-окне от un-htmlentitied?

У меня есть настраиваемый мета-ящик, который должен принимать HTML, но текст, который я пытаюсь ввести, содержит как двойные, так и одинарные кавычки (и амперсанды), и он испортил сохраненные данные – каждый раз, когда я перезагружаю сообщение, данные дублируется с добавочной отдельной цитатой (и угловой скобкой), вставленной в конец. Я предполагаю, что он пытается «закрыть» то, что, по его мнению, является закрытой фразой в одинарных кавычках, когда на самом деле это апостроф.

Я могу временно исправить это прямо сейчас, используя код символа html для моего апострофа, но (а) это не является в конечном итоге решением, поскольку я не могу контролировать, что другие пользователи могут ввести после того, как тема будет развернута, и (б) один раз перезагрузка страницы, символ html снова был заменен апострофом, что означает, что если я сохраню дальнейшие изменения, я вернусь к квадрату.

Итак, как я могу «удалить» содержимое html в метабокс без удаления html-тегов? Есть ли специальная функция wordpress / hook / action / etc или специальный формат метабокса, который я должен использовать, или я должен просто искать это в руководстве PHP?

PS: он также «вырезает» любые html-символы, такие как & , поэтому сообщение не будет корректно проверяться, потому что в тексте теперь есть обычный текст.

ОБНОВИТЬ:
Итак, кто знал, что одиночные или двойные кавычки имели какое-то значение в простой php? Мне удалось исправить странное дублирование и «исправление» апострофа, заменив мои кавычки в моем коде.

Мой оригинальный код:

 echo "<textarea class='meta-textarea' style='width: 100%;' cols='20' rows='2' name='" . $meta_box['name'] . "_value' value='" . $meta_box_value . "'>" . $meta_box_value . "</textarea><br />"; 

Если я сохраню следующую фразу: <p>Blah &amp; blah 'blah'</p> <p>Blah &amp; blah 'blah'</p> в появившемся текстовом поле, он вернет '><p>Blah & blah 'blah'</p> .

Если я просто заменю одиночные и двойные кавычки в моем коде, вот так:

 echo '<textarea class="meta-textarea" style="width: 100%;" cols="20" rows="2" name="' . $meta_box['name'] . '_value" value="' . $meta_box_value . '">' . $meta_box_value . '</textarea><br />'; 

то он работает просто отлично (кроме объекта html-entity, который все еще является проблемой).

Эти две строки кода вместе, так что вы можете видеть, что я не оставлял никаких цитат (верхний работает, внизу нет):

 echo '<textarea class="meta-textarea" style="width: 100%;" cols="20" rows="2" name="' . $meta_box['name'] . '_value" value="' . $meta_box_value . '">' . $meta_box_value . '</textarea><br />'; echo "<textarea class='meta-textarea' style='width: 100%;' cols='20' rows='2' name='" . $meta_box['name'] . "_value' value='" . $meta_box_value . "'>" . $meta_box_value . "</textarea><br />"; 

Итак, теперь вопрос о странном дублировании был исправлен (хотя я не понимаю, почему – я думал, что одиночные и двойные кавычки являются взаимозаменяемыми, если вы не делаете какую-либо нечетную замену и т. Д. Остается вопрос: как остановить текст, полученный htmlspecialchars_decode использовании htmlspecialchars_decode , или что-то еще происходит здесь …

Solutions Collecting From Web of "Как отключить HTML-объекты в настраиваемом мета-окне от un-htmlentitied?"

Если мне позволено ответить на мой собственный вопрос здесь: я нашел способ остановить преобразование своих html-объектов обратно в символы с помощью <?php esc_textarea( $text ) ?> , Как описано здесь codex: http: / /codex.wordpress.org/Function_Reference/esc_textarea .

Не уверен, что это правильный способ сделать это, но его работа. Мой (отрезанный) код метакокса теперь выглядит так:

 <?php if ( $meta_box['type'] == "textarea" ) { $meta_box_value = esc_textarea( get_post_meta($post->ID, $meta_box['name'].'_value', true) ); echo '<textarea class="meta-textarea" style="width: 100%;" cols="20" rows="2" name="' . $meta_box['name'] . '_value">' . $meta_box_value . '</textarea><br />'; } ?> 

Это, в сочетании с приведенной выше одинарной / двойной цитатой, отлично работает.

Это сработало для меня: используйте esc_html (), когда вы сохраняете текст метаболизма:

 $my_data = esc_html( $_POST['my_value'] ); // Update the meta field in the database. update_post_meta( $post_id, '_my_field', $my_data ); 

Извлеките свой текст обмена как обычно:

 $value = get_post_meta( $post->ID, '_my_field', true );