Wie wende ich dauerhaft Inhaltsfilter an?
-
16-10-2019 - |
Frage
Ich habe den folgenden temporären Filter, um einen Inhaltsfehler zu beheben. Wir haben Daten in unseren Beiträgen mit 4 -stelligen Zip -Codes, da die führende Null beim Erstellen der Originaldatei geschnitten wurde. (Zum Beispiel beträgt eine Postleitzahl von Massachusetts 0xxxx, aber jetzt in unserem Inhalt ist es xxxx)
function fix_zip_code($content){
if (preg_match('/<span class="postal-code">(\d{4})<\/span>/i',$content, $match)){
$content = str_replace($match[0],'0'.$match[0],$content);
}
return $content;
}
add_filter('the_content', 'fix_zip_code');
Wie kann ich diesen Filter auf alle Inhalte gleichzeitig anwenden und die Beiträge neu speichern, damit ich den Regex-Filter vollständig entfernen kann?
Lösung
//run once
$allposts = get_posts('post_status=publish&numberposts=-1');
foreach ($allposts as $thispost) {
wp_update_post( array(
'ID' => $thispost->ID,
'post_content' => fix_zip_code($thispost->post_content)
)
);
}
Aber wie Rarst erwähnt, sichern Sie Ihre Datenbank, bevor Sie etwas tun ...
Andere Tipps
Sie können versuchen, sich dem von WP/PHP -Seite zu nähern, aber ich denke, in diesem Fall wäre es einfacher, den Ersatz in der Datenbank auszuführen.
Zum Beispiel gibt es mehrere Werkzeuge Suchen und ersetzen Sie nach WordPress -Datenbanken. Stellen Sie einfach sicher, dass Sie die Datenbank ordnungsgemäß sichern und nach Möglichkeit auf separate Installation testen.