Cómo forzar la actualización de todas las entradas después de la importación

20 feb 2018, 10:31:34
Vistas: 25.7K
Votos: 2

Recientemente importé una gran cantidad de entradas personalizadas en WordPress. Todo funciona bien, excepto una taxonomía que está importada pero no se muestra en el frontend, hasta que hago clic en el botón "actualizar" de cada entrada. Tengo 810 entradas y esta no es una solución...

Creo que debería haber una manera de ejecutar un comando MySQL para forzar la actualización de todas las entradas sin hacer ningún cambio. Por favor, ayúdenme con el comando, he buscado plugins y no puedo encontrar nada adecuado

Gracias

4
Comentarios

Pequeña pista, la interfaz de usuario también tiene una acción en masa para actualizar todas las entradas. Deberías cambiar la lista de todas las entradas, en las opciones de pantalla en la parte superior derecha para el conteo de entradas. Después de esto, usa la acción en masa para actualizar todas las entradas que estén listadas.

bueltge bueltge
20 feb 2018 11:05:24

Lo siento, no soy programador... si te refieres a la acción en masa en la pantalla de administración, no funciona. Lo único que funciona para mí es ir a cada entrada y presionar el botón "actualizar".

AlexPTY AlexPTY
20 feb 2018 11:14:52

Sí, es para usuarios sin conocimientos de programación. Ve a wp-admin/edit.php y selecciona la opción de edición en las acciones en masa, selecciona también todas las entradas y haz clic en Aplicar. Ahora la primera entrada seleccionada abrirá la vista de edición rápida y podrás cambiar datos, lo cual se actualizará en todas las entradas seleccionadas después de la actualización.

bueltge bueltge
20 feb 2018 11:35:57

como dije, no funciona desde la acción masiva, solo funciona el botón "actualizar" de cada publicación

AlexPTY AlexPTY
20 feb 2018 11:50:04
Todas las respuestas a la pregunta 3
5

Existen 2 formas de hacer esto. La primera y más difícil es escribir un programa, la otra es realizar una actualización masiva. ¿Por qué hacerlo difícil cuando la manera fácil funciona igual de bien? Especialmente tratándose de un requerimiento que solo se hará una vez.

La manera fácil:

  1. En el panel de administración, selecciona la vista con todos los posts de tu tipo personalizado
  2. Selecciona todos los posts (marcándolos) - Puedes ver más posts haciendo clic en 'Opciones de pantalla' en la parte superior derecha de la vista y aumentando el número de elementos por página
  3. Haz clic en la flecha hacia abajo junto a 'Acciones en masa' y selecciona editar
  4. Presiona 'Aplicar' - obtendrás una pantalla con varias opciones de cambios que puedes realizar
  5. Realiza algún cambio, como agregar una etiqueta o cambiar el autor (lo que sea)
  6. Presiona 'Actualizar'

Eso debería ser suficiente.

La manera 'difícil':

En caso de que alguien prefiera usar la solución con código, puedes agregar el siguiente código al archivo functions.php de tu tema hijo.

function my_update_posts() {
    //$myposts = get_posts('showposts=-1');//Obtener los posts que deseas modificar
    $args = array(
        'post_type' => 'post',
        'numberposts' => -1
    );
    $myposts = get_posts($args);
    foreach ($myposts as $mypost){
        $mypost->post_title = $mypost->post_title.'';
        wp_update_post( $mypost );
    }
}
add_action( 'wp_loaded', 'my_update_posts' );

Recuerda ejecutar esto solo una vez y luego elimínalo o comenta la línea add_action, de lo contrario se ejecutará cada vez que se cargue una nueva página.

Incluí esta opción por si alguien quiere una plantilla de inicio para actualizar todos los títulos de los posts u alguna otra propiedad en todos los posts.

20 feb 2018 11:31:33
Comentarios

O usa -1 para todos los posts en lugar de los 1000 en este ejemplo.

bueltge bueltge
20 feb 2018 13:20:13

La forma fácil no funciona. La edición rápida no funciona como dije antes, solo la edición completa del post funciona. No sé por qué, quizás porque este botón activa el comando "publicar" en lugar de "actualizar". ¿Hay alguna forma de forzar a "publicar" los posts en lugar de "actualizar"?

AlexPTY AlexPTY
20 feb 2018 13:38:11

no, no funciona. Creo que editaré manualmente todos los posts mañana, tomará un par de horas, pero ya he pasado medio día buscando soluciones. Gracias a todos.

AlexPTY AlexPTY
20 feb 2018 14:44:42

Igual que @AlexPTY, este código debe ser similar a la actualización masiva. No tiene efecto.

Michael Rogers Michael Rogers
27 mar 2020 21:51:28

Puedes eliminar la línea $mypost->post_title = $mypost->post_title.'';. Además, si usas wp_insert_post( $mypost ); es un poco más rápido. (no insertará una nueva entrada porque el ID es el mismo)

Jules Jules
24 dic 2020 14:27:46
9

Primero: Obtener todas las publicaciones usando get_posts o WP_Query.

$query_posts = new WP_Query( array(
    'nopaging' => true,
) );

Segundo: Hacer un bucle para las publicaciones y usar wp_update_post() para cada publicación estableciendo el parámetro ID.

while ( $query_posts->have_posts() ) :
    $query_posts->the_post();
    wp_update_post( array(
        'ID' => get_the_ID(),
        'post_content' => get_the_content(),
    ) );
endwhile;

Coloca este código en la acción init o en el header/footer. Actualiza la página una vez y elimina el código. Coloca este código en functions.php y todas tus publicaciones se actualizarán al recargar la página.

add_action( 'init', function () {
    $query_posts = new WP_Query( array(
        'nopaging' => true,
    ) );

    while ( $query_posts->have_posts() ) :
        $query_posts->the_post();
        wp_update_post( $post );
    endwhile;
    wp_reset_postdata();
} );
20 feb 2018 11:58:42
Comentarios

Gracias Maxim, pero este código borró el contenido de todas mis publicaciones al actualizar. Voy a restaurar todo e intentaré otra solución

AlexPTY AlexPTY
20 feb 2018 13:31:58

establece el contenido de tu publicación actual en post_content dentro de la función wp_update_post(). wp_update_post( array( 'ID' => get_the_ID(), 'post_content' => get_the_content() ) );

Maxim Sarandi Maxim Sarandi
20 feb 2018 13:33:37

lo siento, no soy programador. solo puedo copiar/pegar ;)

AlexPTY AlexPTY
20 feb 2018 13:48:45

Edité mi publicación.

Maxim Sarandi Maxim Sarandi
20 feb 2018 13:50:40

lo siento, solo borra el contenido de la publicación al actualizar.

AlexPTY AlexPTY
20 feb 2018 13:56:00

Edité mi publicación. He probado mis soluciones en mi sitio. Todo funciona bien

Maxim Sarandi Maxim Sarandi
20 feb 2018 14:01:26

todavía no funciona, solo el botón "actualizar" al editar el post hace el truco. Supongo que tendré que editar los 810 posts. Gracias de todos modos

AlexPTY AlexPTY
20 feb 2018 14:12:41

¿Qué truco? ¿Cómo funciona el truco? ¿En el hook save_post? Editar manualmente...es un camino muy largo ))

Maxim Sarandi Maxim Sarandi
20 feb 2018 14:15:18

Quizás necesitas agregar global $post antes de wp_update_post( $post );, probablemente al faltar esto es que el contenido del post se borra al actualizar?

Iurie Iurie
30 oct 2022 01:18:22
Mostrar los 4 comentarios restantes
1
-1

Para cualquier persona interesada en el futuro: para actualizar publicaciones de forma masiva una por una, puedes usar la extensión de Chrome Web Scraper que automatizará los clics en el botón de actualización en cada publicación.

6 mar 2020 12:30:13
Comentarios

¿cómo lo conseguiste? Estoy intentando usarlo pero nada funciona como se esperaba

moeses moeses
4 feb 2021 18:07:18