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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top