Солнцеворот 0 Жалоба Опубликовано: 9 января, 2016 Достало. А ведь всего-лишь хочешь отформатировать статью так, как считаешь нужным, но нет, вордпресс обрамляет тегом p всё, что считает нужным, в том числе и ссылки с картинками, которые выглядят в статье ущербно из-за этого. По интернету ходит легенда, будто это прекратится, если добавить в functions.php заглушку remove_filter( 'the_content', 'wpautop'); Но нет, эта заглушка - вредная полумера, костыль, который не решает проблему. На самом деле эти триклятые теги на ходу добавляет скрипт, когда вы пишете статью. Более того, он, похоже, срабатывает также и по таймеру и переделывает структуру документа на свой лад. Например, вставляем в пост картинку img, которая тут же обрамляется в тег p, получается так: <p> <a href="#"> <img src="#"/> </a></p> Открываем отладчик, удаляем теги p прямо из DOM, на несколько секунд структура становится такой, как нам надо, но через 5-10 секунд срабатывает скрипт, который возвращает все на свои места. К сожалению, я не владею средствами отладки настолько, чтобы понять какой скрипт за это отвечает и какую функцию нужно задушить, чтобы этот вонючий тег больше не вставлялся куда попало. Братцы, я знаю, что это не только меня бесит, давайте наконец решим этот вопрос, подключайтесь! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abrahadabra 52 Жалоба Опубликовано: 10 января, 2016 Когда ж вы перестанете есть этот кактус? Какой там редактор? TinyMCE? Добавьте ему в конфиг: force_p_newlines : false,force_br_newlines : true, Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Солнцеворот 0 Жалоба Опубликовано: 10 января, 2016 @abrahadabra, спасибо. Может вы еще знаете, где этот конфиг в Вордпрессе? Но вероятность того, что ваш метод сработает близок к нулю, потому как поиск по файлам не находит такого сочетания букв: force_p_newlines Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abrahadabra 52 Жалоба Опубликовано: 10 января, 2016 неа, вордпрессами не балуюсь. И другим не советую. Поиск не находит скорее всего потому что у вас этих настроек нет, и используются настройки по умолчанию. Редактор-то какой там? TinyMCE? Верно? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Солнцеворот 0 Жалоба Опубликовано: 10 января, 2016 @abrahadabra, верно, TinyMCE. Раз у него таких команд не встречается, значит он их и не поймет. Еще раз добавлю о костыльности всего решения: Создавая статью в визуальном редакторе TinyMCE он автоматически обрамляет все, что написано с новой строки тегами <p></p> . При этом, перед сохранением записи в базу данных он эти теги удаляет, и в базе статья хранится без тегов <p></p>. При выводе записи, Вордпресс считывает текст статьи из базы данных и заново обрамляет ее тегами <p></p>, где считает нужным. Вот три костыля, на которых работает это решение. Чтобы удалить костыль №3: Чтобы отключить добавление тегов при выводе записи, нужно добавить фильтр в functions.php : /* Отключаем добавление тегов <p></p> к записям при выводе */ remove_filter( 'the_content', 'wpautop' ); Теперь нужно добиться, чтобы в базу данных сохранялась корректная запись (чтобы редактор не добавлял и не затирал теги). Костыли №1 и №2 можно обойти следующим образом: Переключиться в режим редактирования записи в виде HTML-текста, и больше не переключаться в режим Визуального редактора. В текстовом редакторе нужно записать статью в текстовом виде и сохранить. Пока так. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Солнцеворот 0 Жалоба Опубликовано: 12 января, 2016 (изменено) Сам-себе отвечу, итого: Ремонт костыля №3: Чтобы отключить добавление тегов при выводе записи, нужно добавить фильтр в functions.php : /* Отключаем добавление тегов <p></p> к записям при выводе */ remove_filter( 'the_content', 'wpautop' ); Ремонт костыля №2: Для того, чтобы Вордпресс отображал в HTML-редакторе все теги и сохранял в БД записи вместе со всеми тегами, нужно в файл functions.php темы дописать следующее: function customize_tinymce_settings($mceInit) { // Отключает функцию очистки от тегов <p></p> при переключении редактора в HTML-режим $mceInit['wpautop'] = false; return $mceInit;}add_filter( 'tiny_mce_before_init', 'customize_tinymce_settings' ); Ремонт костыля №1: Там, где не нужно обрамление тегами <p></p>, обернуть содержимое в блок <div></div>. Для удобства можно определить свой список стилей блоков, для этого в ранее созданую функцию customize_tinymce_settings дописать: // Новый список стилей блоков$mceInit['block_formats'] = 'Абзац <p>=p;Блок <div>=div;Заголовок <h2>=h2;Заголовок <h3>=h3;Pre <pre>=pre;Код <code>=code;'; Теперь, выделяя нужный фрагмент, можно присвоить ему обрамление div вместо p .Изменено 12 января, 2016 пользователем Солнцеворот Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
wwt 608 Жалоба Опубликовано: 12 января, 2016 Раз у него таких команд не встречается, значит он их и не поймет. не значит. Это может означать лишь то что по умолчанию они не прописаны. Читайте документацию по TinyMCE там уж точно это должно быть. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах