Respecto a get_field(pertenece), se trata de un Custom Field que se llama así, tal cual, pertenece. Es un campo que el usuario introduce al redactar una clase, para indicar el ID del padre (curso), para solucionar el tema de que cuando un curso aún no esté publicado, admita ese campo.
Lo de remover y añadir la acción dentro de la función fue una solución que encontré buscando por la red. Es la única solución que encuentro para que una vez que actualizo una clase, WordPress no me entre en un bucle infinito. Si lo dejo así:
Código PHP:
function save_curso_parent($post_id,$post,$update){
$post_type = get_post_type($post_id);
if ("curso" != $post_type) return;
$new_post_id=get_field(pertenece);
wp_update_post(
array(
'ID' => $post_id,
'post_parent' => $new_post_id
)
);
}
add_action( 'save_post', 'save_curso_parent',10,3);
me quedo dentro de ese bucle infinito que te comento.
Gracias por tu ayuda, @ArturoGallegos.