Pregunta

Tengo el siguiente filtro temporal para corregir un error de contenido. Tenemos datos en nuestros puestos que tienen 4 dígitos códigos postales, ya que el cero era líder de corte cuando se creó el archivo original. (Por ejemplo, un código postal Massachusetts es 0xxxx, pero ahora en nuestro contenido 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');

¿Cómo puedo aplicar ese filtro a todo el contenido a la vez y volver a guardar los mensajes para que pueda quitar el filtro de expresiones regulares completo?

¿Fue útil?

Solución

//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)
          )
     );
}

Sin embargo, como se mencionó Rarst, copia de seguridad de su base de datos antes de hacer nada ...

Otros consejos

Se puede tratar de aproximarse a la de un lado NE / PHP, pero creo que en este caso sería más fácil de ejecutar el reemplazo de la base de datos.

Hay varias herramientas de torno, por ejemplo búsqueda y reemplazo de las bases de datos de WordPress . Sólo asegúrese de correctamente una copia de seguridad de base de datos antes de que la prueba y por separado en instalar si es posible.

Licenciado bajo: CC-BY-SA con atribución
scroll top