¿Cómo ejecutar una función una vez en cada publicación en la base de datos?

2

Tengo una función simple que formatea automáticamente toda la publicación después de la publicación / actualización.

Está enganchado en:

add_action('save_post', 'myFunction');

Me gustaría formatear cada publicación, que ya tengo en la base de datos. Sé que puedo abrir todas las publicaciones y hacer clic en actualizar para llamar al enlace "save_post" en myFunction en la publicación, pero mi base de datos de publicaciones es bastante grande ...

¿Es posible ejecutar la función solo una vez en cada publicación ya publicada de alguna manera o actualizar cada publicación para que el gancho llame automáticamente a la función?

    
pregunta Joudicek Jouda 29.05.2013 - 17:58

2 respuestas

4

Sí, esto es posible. Algo como esto debería afectar a todas las publicaciones que se publican actualmente. Literalmente ejecute esto una vez y luego deshabilítelo comentando el add_action o tendrá un montón de consultas no deseadas en la base de datos.

Ejecutando una vez: con este código ubicado en functions.php, la función se ejecutará cuando se cargue la parte delantera de su sitio en un navegador. Cargue la página de inicio de su sitio en un navegador y luego deshabilite la función. Confirme que su formato de publicación se aplicó a las publicaciones existentes.

     add_action( 'init', 'my_function', 10);

     function my_function() {
        $args = array( 'post_type' => 'post', 'post_status' => 'publish');
        $pages = get_pages($args);
        foreach ( $pages as $page ) {
            // Do something here. Call your formatting function
            }
    }

Editar: Si absolutamente debe ejecutarse no más de una vez, haga que su función busque una tabla SQL con un valor booleano de verdadero o falso. Si falso o la tabla no existe, ejecute la función, cree la tabla y configúrela como verdadera.

    
respondido por el iyrin 29.05.2013 - 19:53
0

También podría considerar hacer una copia de seguridad de la base de datos y probar una búsqueda y reemplazo de SQL. Depende de lo que estés tratando de hacer con todas tus publicaciones:

UPDATE wp_posts SET post_content = replace(post_content, 'Find This String', 'Replace With This String');
    
respondido por el GhostToast 30.05.2013 - 19:21

Lea otras preguntas en las etiquetas