Jump to content
  • 0

Достало автоматическое добавление тегов p


Солнцеворот
 Share

Question

Достало.

А ведь всего-лишь хочешь отформатировать статью так, как считаешь нужным, но нет, вордпресс обрамляет тегом p всё, что считает нужным, в том числе и ссылки с картинками, которые выглядят в статье ущербно из-за этого.

По интернету ходит легенда, будто это прекратится, если добавить в functions.php заглушку 

remove_filter( 'the_content', 'wpautop');

Но нет, эта заглушка - вредная полумера, костыль, который не решает проблему.

 

На самом деле эти триклятые теги на ходу добавляет скрипт, когда вы пишете статью. Более того, он, похоже, срабатывает также и по таймеру и переделывает структуру документа на свой лад.

Например, вставляем в пост картинку img, которая тут же обрамляется в тег p, получается так:

<p>    <a href="#">        <img src="#"/>    </a></p> 

Открываем отладчик, удаляем теги p прямо из DOM, на несколько секунд структура становится такой, как нам надо, но через 5-10 секунд срабатывает скрипт, который возвращает все на свои места.

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

 

Братцы, я знаю, что это не только меня бесит, давайте наконец решим этот вопрос, подключайтесь!

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Сам-себе отвечу, итого:

 

Ремонт костыля №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;';

d5e93b880dae.png

 

Теперь, выделяя нужный фрагмент, можно присвоить ему обрамление div вместо p .

Edited by Солнцеворот
Link to comment
Share on other sites

  • 0

@abrahadabra, спасибо. Может вы еще знаете, где этот конфиг в Вордпрессе?

Но вероятность того, что ваш метод сработает близок к нулю, потому как поиск по файлам не находит такого сочетания букв: 

force_p_newlines
Link to comment
Share on other sites

  • 0

неа, вордпрессами не балуюсь. И другим не советую.

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

Редактор-то какой там? TinyMCE? Верно?

Link to comment
Share on other sites

  • 0

@abrahadabra, верно, TinyMCE. Раз у него таких команд не встречается, значит он их и не поймет.
Еще раз добавлю о костыльности всего решения:

  • Создавая статью в визуальном редакторе TinyMCE он автоматически обрамляет все, что написано с новой строки тегами <p></p> .
  • При этом, перед сохранением записи в базу данных он эти теги удаляет, и в базе статья хранится без тегов <p></p>.
  • При выводе записи, Вордпресс считывает текст статьи из базы данных и заново обрамляет ее тегами <p></p>, где считает нужным.

Вот три костыля, на которых работает это решение.
 
Чтобы удалить костыль №3:
Чтобы отключить добавление тегов при выводе записи, нужно добавить фильтр в functions.php :

/* Отключаем добавление тегов <p></p> к записям при выводе */ remove_filter( 'the_content', 'wpautop' );

Теперь нужно добиться, чтобы в базу данных сохранялась корректная запись (чтобы редактор не добавлял и не затирал теги).
 
Костыли №1 и №2 можно обойти следующим образом:
Переключиться в режим редактирования записи в виде HTML-текста, и больше не переключаться в режим Визуального редактора.
e735accff6db.png
 
В текстовом редакторе нужно записать статью в текстовом виде и сохранить.
 
Пока так.

Link to comment
Share on other sites

  • 0
Раз у него таких команд не встречается, значит он их и не поймет.

не значит. Это может означать лишь то что по умолчанию они не прописаны. Читайте документацию по TinyMCE там уж точно это должно быть.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy