Código que permite convertir los términos de una taxonomía en un contenido personalizado o custom post type.
function make_posts_from_taxonomy($taxonomy) {
if(did_action('init') === 1) { //Se asegura de que la función sólo se ejecuta una vez
// Get all Taxonomy
$args = array(
'parent' => 0,
'hide_empty' => false,
);
$taxonomy = 'your_taxonomy'; //Definir taxonomía personalizada (fuente)
$post_type = 'your_CPT'; // Definir tipo de entrada personalizado (objetivo)
$terms = get_terms( $taxonomy, $args);
foreach ($terms as $term) {
set_time_limit(20); //Intento de evitar tiempos de espera
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_$t_id" );
$name = $term->name; //Título
$slug = $term->slug; //Slug
$description = $term->description; //Descripción
//Arriba encuentra todos los datos de la Taxonomía Personalizada y los metadatos asociados.
//Hacemos un nuevo post para cada artículo, utilizando los mismos detalles de la Taxonomía
if( null == get_page_by_title( $name ) ) { // Si el post no existe.
$new_post = array(
'post_title' => $name,
'post_content' => $description, //Utilizar la descripción de la taxonomía para el contenido de la entrada
'post_name' => $slug,
'post_status' => 'publish',
'post_type' => $post_type,
);
//Insert post
$post_id = wp_insert_post( $new_post );
//Insertar meta donde existe.
if (!empty($term_meta['buy_download_meta'])) : update_post_meta ($post_id, '_cmb_buy', $term_meta['buy_download_meta']); endif;
if (!empty($term_meta['custom_term_meta'])) : update_post_meta ($post_id, '_cmb_discogs', $term_meta['custom_term_meta']); endif;
if (!empty($term_meta['itunes_meta'])) : update_post_meta ($post_id, '_cmb_itunes', $term_meta['itunes_meta']); endif;
if (!empty($term_meta['artist_showcase_meta'])) : update_post_meta ($post_id, '_cmb_showcase', $term_meta['artist_showcase_meta']); endif;
} else {
}
}
}
}
register_activation_hook( __FILE__, 'make_posts_from_taxonomy' );