Intereting Posts
Должен ли я запускать две разные «близкие» версии кода WordPress с той же БД Почтовые теги показывают внешний цикл? Добавить фильтр в get_posts Множественная фильтрация облаков тегов Force WordPress 3.3 использовать Flash-загрузчик Как перенаправить пользовательский поиск Google на страницу / шаблон WordPress? Создать <meta name = "description" Использование заголовка страницы + первое предложение основного текста Удаление ненужного текста из меню администратора без CSS Кнопка массового действия wp_list_table не работает – нет отправки Объедините результаты нескольких WP_Query, чтобы они были похожи на один WP_Query Как показать только маркированные категории / таксоны CPT для пользовательского типа сообщений? Как установить шаблон страницы для новой персонализированной публикации типа сообщения? Как получить значения метаданных – WP tuts tutorial Как одна строка в блоге удаляет мой сервер? CPT: если в столбце больше X изображений, используйте разбиение на страницы

Поиск и удаление специальных коротких кодов из всех сообщений

Вопрос

Есть ли способ удалить определенный [print_me] , скажем [print_me] со всех сообщений, где он появляется за один снимок. И я не имею в виду маску или фильтрацию, чтобы она не отображалась, пока она остается в post_content . Я хочу, чтобы он прошел.

Попытки до сих пор …

Пока что я использовал phpMyAdmin, я post_content запрос на все post_content который появляется в таблице wp_posts и он показывает все сообщения, которые я искал, но слишком много для обработки по отдельности. Я запустил запрос на поиск / замену обновлений на результаты, пытаясь заменить его "" (ничего), но пока запрос выполнялся успешно, поэтому он сказал: «Я не вижу, чтобы короткие коды ушли, поэтому я не уверен, что я что-то пропустил» ,

Вот запрос, который я использовал для их поиска:

 SELECT * FROM `wp_posts` WHERE `post_content` LIKE '%[print_me]%' 

и я получаю 111 записей. Но затем, используя тот же инструмент для поиска и замены, я получаю:

Ваш SQL-запрос выполнен успешно

ОБНОВЛЕНИЕ db1357924680 . wp_posts SET post_content = REPLACE ( post_content , '% [print_me]%', '%%') WHERE post_content LIKE '%% [print_me] %%' COLLATE utf8_bin

Но когда вы проверяете, они все еще там. Я надеюсь, что кто-то знает лучший или правильный способ сделать это и согласиться поделиться. Если я нахожусь на правильном пути, то я был бы признателен за помощь в выяснении, почему она не работает должным образом. ТИА.

Разрешение (благодаря @ TheDeadMedic)

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

UPDATE db1357924680.wp_posts SET post_content = REPLACE (post_content, '[print_me]', '') WHERE post_content LIKE '% [print_me]%'


История (tl / rl)

Я использовал плагин какое-то время, которое может заставить что-то появляться на КАЖДОЙ почте и на странице, или вы можете выбрать только короткий код, если считаете, что это подходит для этого контента.

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

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

Некоторая информация о среде / системе: PHP / Linux / WP_4.5.1 / SQL_5.1.73 / PMA_4.1.14.8

Solutions Collecting From Web of "Поиск и удаление специальных коротких кодов из всех сообщений"

Для постоянного решения ваш SQL-запрос немного отключен – вам нужно:

 UPDATE db1357924680.wp_posts SET post_content = REPLACE( post_content, '[print_me]', '' ) WHERE post_content LIKE '%[print_me]%' 

Пример замены MySQL

Существует более простой способ сделать это:

 add_filter( 'the_content', 'my_post_content_remove_shortcodes', 0 ); function my_post_content_remove_shortcodes( $content ) { /* Create an array of all the shortcode tags. */ $shortcode_tags = array( 'shortcode_1', 'shortcode_2', 'shortcode_3' ); /* Loop through the shortcodes and remove them. */ foreach ( $shortcode_tags as $shortcode_tag ) remove_shortcode( $shortcode_tag ); /* Return the post content. */ return $content; } 

Вы можете оставить это в своем файле функций.

Источник: http://justintadlock.com/archives/2013/01/08/disallow-specific-shortcodes-in-post-content

–редактировать–

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

Приведенный ниже код будет фильтровать весь ваш контент и удалять определенные короткие коды, которые вы обозначаете в месте, отмеченном как shortcode_1 и т. Д.

Как сказал Марк: «Это не совсем то, о чем вы просили, но даст вам похожие результаты, если вы будете пытаться найти что-то еще.

Надеюсь, поможет!