Intereting Posts
Есть ли пустая среда темы, совместимая с WP 3.0? $ wp_customize-> remove_section для настройки настраивателя? Изменение запланированных должностей для публикации Записывание сценария в нижний колонтитул помещает его в самое нижнее Ежедневные уведомления о неудачных попытках входа в систему для несуществующего администратора С помощью селекторов класса css на странице спецификаций как добавить пользовательские css и js в текстовый редактор WordPress непосредственно без использования .php-файла Восстановить wordpress, заменив файл вручную Файл WordPress .htaccess дает проблемы с подкаталогом Предложения по подходу к новому плагину Я застрял WordPress перевод loading english file Можно ли изменить URL-адрес изображения на крючки? Как получить мой пользовательский тип сообщения для отображения в последних сообщениях с помощью «pre_get_posts» Сохранение страницы параметров плагина Как скрыть мета из результатов поиска только на страницах?

Создание пользовательских настроек при добавлении всплывающего окна

Я создаю флажок на всплывающем экране Add Media, чтобы добавить HTML в вывод $html при вставке изображения.

Это работает нормально. Однако, как только я добавил изображение с выбранным флажком. Если я попытаюсь добавить его снова и снимите флажок, он не зарегистрирует и не сохранит это изменение.

Таким образом, всегда выводится измененное изображение вместо возврата к стандарту WP по умолчанию, если он не установлен.

Плюс галочка после того, как я ее выбрал и вставил на страницу, будет всегда выбираться каждый раз, когда я выбираю это изображение.

Как я могу сделать функцию флажка unselect, как и следовало ожидать?

Очень ценю помощь. благодаря

  class media_uploader_cb{ function __construct(){ // attach our function to the correct hook add_filter('attachment_fields_to_edit', array( $this, 'attachment_fields_to_edit' ), 10, 2); //save attachment field add_filter( 'attachment_fields_to_save', array( $this, 'attachment_fields_to_save' ), 10, 2); //add custom css class add_filter( 'media_send_to_editor', array( $this, 'media_send_to_editor' ), 10, 2 ); } /** * Adding our custom checkbox field to the $form_fields array * * @param array $form_fields * @param object $post * @return array */ function attachment_fields_to_edit($form_fields, $post) { $form_fields['add_class']['label'] = __("Add SEO Data"); $form_fields['add_class']['input'] = 'html'; $form_fields['add_class']['html'] = '<input type="checkbox" value="1" name="attachments['.$post->ID.'][add_class]" id="attachments['.$post->ID.'][add_class]" '.checked( 1, get_post_meta($post->ID, 'add_class', true), false ).'/>'; return $form_fields; } /** * Saving our custom checkbox field * @param array $post * @param array $attachment * @return array */ function attachment_fields_to_save($post, $attachment) { if( isset($attachment['add_class']) ){ update_post_meta($post['ID'], 'add_class', $attachment['add_class']); } return $post; } /** * Adding our custom css class based on checkbox field * * @param string $html * @param int $id * @return string */ function media_send_to_editor( $html, $id ) { //only add class if the checkbox was checked if ( 1 == (int)get_post_meta($id, 'add_class', true) ){ //change this to whatever you want $seo_data_to_add = 'custom="HTML Output Here""'; // THIS SHOULD BE THE CHECKBOX get_post_meta($id, 'add_class', true); $attachment_title = get_the_title($id); $title = 'title="'.$attachment_title .' by '. get_option('ews_opt_branding') .'"'; $html = str_replace('<img', '<img '.$title.' '.$seo_data_to_add.'', $html); } return $html; } } new media_uploader_cb(); 

Solutions Collecting From Web of "Создание пользовательских настроек при добавлении всплывающего окна"

Получил некоторую помощь от другого форума. Это вызвало некоторый мозговой штурм в офисе, и мы придумали решение. Не уверен, что это лучший способ его решения, но он работает так, как ожидалось. Я добавил этот код:

delete_post_meta($id, 'add_class', true);

чуть выше:

return $html;

в конце последней функции, и все ведет себя правильно. Если есть лучшее решение, сообщите мне.