Uwaga! Wszystkie informacje i solucje zawarte w postach typu DYI mogą z czasem przestać być aktualne. Niektóre publikowane kody źródłowe, będąc zależnymi od używanych konfiguracji platform i sprzętu, mogą nie działać, lub działać nieprawidłowo u niektórych użytkowników. Stosując opisane rozwiązania przyjmujesz do wiadomości i zgadzasz się, że nie ponoszę odpowiedzialności za ich finalne efekty.
Czyż nie zdarza się czasem, że trzeba usunąć wszystkie obrazy z wpisów publikowanych na stronie zbudowanej na WordPress’ie? Powody mogą być różne, np. nieautoryzowane używanie grafik, potrzeba odświeżenia treści, rezygnacja z multimediów w postach, itp.
Już widzę jak wszyscy się rzucają i edytują post po poście, żeby usuwać kontent. Też mi się nie chciało robić tego ręcznie. I choć po takim zabiegu obrazy wciąż pozostają na serwerze, to przestają być dostępne dla czytelnika. Założenie wstępne jest takie, że obrazy we wszystkich postach umieszczone są w poszczególnych akapitach, tj. zapis w kodzie wygląda mniej więcej tak:
<p><img src”cośtam.jpg” alt=”” title=””></p>
Utwórz plik remove.php i umieść w nim poniższą treść:
<?php
// Konfiguracja połączenia z bazą danych WordPress
define('WP_USE_THEMES', false);
require('wp-blog-header.php'); // Zakłada, że skrypt znajduje się w katalogu głównym WordPress
global $wpdb;
// Funkcja do usunięcia pustych akapitów z obrazkami
function remove_empty_paragraphs_with_images() {
global $wpdb;
// Pobierz wszystkie posty z tabeli wp_posts
$posts = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_content LIKE '%<p><img%'");
foreach ($posts as $post) {
// Pobierz zawartość posta
$content = $post->post_content;
// Regex: znajdź i usuń z postów akapity z obrazkami
$content = preg_replace('/<p>\s*<img[^>]*>\s*<\/p>/i', '', $content);
// Zaktualizuj post z poprawioną zawartością
$wpdb->update(
$wpdb->posts,
array('post_content' => $content),
array('ID' => $post->ID),
array('%s'),
array('%d')
);
}
echo "Akapity z obrazkami zostały usunięte.";
}
// Uruchom funkcję
remove_empty_paragraphs_with_images();
?>
Teraz zapisz plik i wrzuć go na serwer tam, gdzie znajduje się plik wp-config.php (zazwyczaj jest to folder główny). Po wrzuceniu wywołaj stronę w przeglądarce: https://nazwadomeny.tld/remove.php. Po wykonaniu skryptu otrzymasz komunikat w przeglądarce „Akapity z obrazkami zostały usunięte”.
PS. Nie zapomnij usunąć pliku remove.php z serwera.