Intereting Posts
Многоузловая ошибка? – Восстановить настройки сети. Доступ к теме и использование дистрибутива GPL-адаптера? Создание галереи WordPress (.gallery-item) Отзывчивость? как фильтровать каждый элемент тега? wordpress alchemy помещает пользовательский метабокс только на определенную страницу PhantomJS с wordpress добавьте функцию для отправки options.php Как я могу центрировать логотип в меню навигации? Как разрешить пользователям выбирать порядок заказов в категориях? Выход короткого кода появляется перед телом Overside functions.php с дочерней темой Использовать AJAX для получения опции из базы данных и использовать ее в настройках jquery или есть альтернатива для рассмотрения? Шаблоны плагинов, в каталоге Могу ли я изменить, какие поля отображаются в форме комментариев? Показать сообщения, содержащие по крайней мере 1 из списка из 10 тегов, но не содержащих другие теги

Как WordPress меняет разметку контента?

В моем посте есть вкладки Visual и Text. Я отформатировал некоторый контент, а на вкладке текста он выглядит так:

<strong>The Mission Statement –</strong> The following is a mission statement. <strong>Company Information –</strong> Formed 2016, founded by <strong>Growth Highlights –</strong> Highlights here 

Когда я публикую документ и смотрю на HTML, он изменяется на это (обратите внимание на теги абзаца):

 <p> <strong>The Mission Statement –</strong> The following is a mission statement. </p> <p> <strong>Company Information –</strong> Formed 2016, founded by </p> <p> <strong>Growth Highlights –</strong> Highlights here </p> 

Я хочу получить опубликованное значение HTML. Я использую плагин, который получает исходное значение HTML, поэтому он возвращает только первый блок кода.

Должен ли я вручную добавлять теги BR, где я встречаю разрывы строк (я действительно не хочу)? Как мне вернуть это форматирование? Почему это не работает?

WordPress запускает фильтр содержимого, чтобы автоматически добавлять абзацы: wpautop . Вы можете удалить фильтр из любого содержимого своего сообщения, если хотите:

 remove_filter('the_content','wpautop'); 

Кроме того, вы можете проверить плагин Disabler, который может сделать это за вас.

Если вы хотите удалить фильтр из определенных сообщений, которые вы можете сделать:

 add_filter('the_content','maybe_remove_wpautop',9); function maybe_remove_wpautop($content) { global $post; // add post iDs for which you do not want autoparagraphs $nowpautopposts = array('23','47'); if (in_array($post->ID,$nowpautopposts)) {remove_filter('the_content','wpautop');} return $content; } 

Следует также отметить, что некоторое форматирование обрабатывается при переключении между вкладками « Text и «Визуализация» на экране записи. Это гораздо более сложная проблема, если вы хотите удалить ее, чтобы попытаться сохранить надстройку HTML Markup Plus .

Обновить:

После того, как вопрос был обновлен, способ получить обработанный блок HTML-кода из содержимого – использовать следующее:

 // (if you don't already have the post object) global $post; $post = get_post($postid); // apply the content filters to the post object contents $content = apply_filters('the_content', $post->post_content); 

Это применит существующие фильтры содержимого к содержимому сообщения.

Я добавил, что лучше установить, что глобальная $post для почтового объекта задана из идентификатора сообщения, потому что вполне возможно, что некоторые плагины могут использовать объект $post в своих условиях фильтра, и вы хотите убедиться (что касается пример предыдущего кода, которому это необходимо.)

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

 remove_filter('the_content','wpautop'); $content = apply_filters('the_content', $post->post_content); $add_filter('the_content','wpautop');