Intereting Posts
Проверьте, является ли текущий пользователь автором первого комментария Как удалить заголовок «оставить ответ» в поле комментариев в двадцать один? update_post_meta не работает в плагине Почему Featured Image не отображается в моем настраиваемом типе сообщений? Разбивка страницы не работает при изменении цикла на основе категории сообщений Показать определенный пункт меню из wp_nav_menu на основе идентификатора Создайте единую страницу для пользовательского типа сообщения Добавить классы + таксономии в wp_list_pages () вывод Перестановка сообщений по категориям Настройка PHP: таксономии и запросы, почему? Загрузка PDF-файла клиента (Каталог) – Автоматическое обновление ссылки в PDF-формате Как получить параметры на этой странице параметров? Можно ли удалить WYSIWYG для определенного типа пользовательских сообщений? Как использовать функцию выхода из пользовательского меню? Возможность редактировать собственные сообщения, а не другие

Удалить / заменить теги img в опубликованном сообщении для опубликованных сообщений

В моем блоге я настроил авто-публикацию для сообщений, и каждый день я получаю 5 тысяч новых сообщений, в этот момент у меня более 150 тысяч сообщений.

Мне нужен скрипт или плагин или функция для подключения к моей базе данных и выделения всех тегов img из постконтента.

Я знаю регулярное выражение для соответствия тегам img, но я не могу найти сценарий для использования этого регулярного выражения

 <img[^>]+\> 

для замены imgs в уже опубликованных сообщениях и для предотвращения появления новых сообщений с тегами изображений.

Я нашел этот класс, и я думаю, что он достигнет моей цели, но я не уверен, как отредактировать это

 $wpdb->query( "UPDATE $wpdb->posts SET post_parent = 7 WHERE ID = 15 AND post_status = 'static'" ); 

чтобы соответствовать моим потребностям.

обратите внимание: мой сайт использует некоторые сообщения о публикации в автоматическом режиме. Любые идеи!

Solutions Collecting From Web of "Удалить / заменить теги img в опубликованном сообщении для опубликованных сообщений"

Вы можете использовать функцию get_posts для получения всей вашей записи, а затем использовать цикл foreach для замены тегов img с помощью регулярного выражения, которое вы разместили, а затем использовать wp_update_post для изменения содержимого сообщения:

 function remove_images_form_past_posts() { if ( get_transient('images_removed_from_past') ) return; $posts = get_posts('nopaging=1'); if ( $posts ) { foreach ( $posts as $post ) { $newcontent = preg_replace('/<img[^>]+\>/i', '', $post->post_content); $newpost = array( 'ID' => $post->ID, 'post_content' => $newcontent); wp_update_post($newpost); } set_transient('images_removed_from_past', 1); } } add_action('admin_init','remove_images_form_past_posts'); 

Этот код следует использовать только один раз, чтобы изменить содержимое прошлых сообщений. Чтобы он работал только один раз, я использовал переходный процесс. См. Codex for Transient API .

Теперь вам нужно добавить функцию, которая перехватывает крюк фильтра 'wp_insert_post_data' и предотвращает добавление новых сообщений с изображениями:

 function remove_images_before_publish( $data, $postarr ) { if ( ! empty($data['post_content']) ) $data['post_content'] = preg_replace('/<img[^>]+\>/i', '', $data['post_content']); return $data; } add_filter('wp_insert_post_data','remove_images_before_publish', 20, 2);