Cómo forzar la actualización de todas las entradas después de la importación
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

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:
- En el panel de administración, selecciona la vista con todos los posts de tu tipo personalizado
- 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
- Haz clic en la flecha hacia abajo junto a 'Acciones en masa' y selecciona editar
- Presiona 'Aplicar' - obtendrás una pantalla con varias opciones de cambios que puedes realizar
- Realiza algún cambio, como agregar una etiqueta o cambiar el autor (lo que sea)
- 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.

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"?

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.

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

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

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

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()
) );

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

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

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