web-dev-qa-db-fra.com

Comment convertir une taxe personnalisée en un type de publication personnalisée?

Je n'ai pu trouver aucune information à ce sujet - une demande inhabituelle.

J'ai décidé de créer un type de message personnalisé pour gérer ma base de données d'artistes et d'albums sur mon site de musique, actuellement stockée sous forme de taxonomie personnalisée. Il y a clairement plus de flexibilité dans les TPC que dans les taxonomies. Je vais utiliser le plug-in Posts2Posts de Scribu pour connecter mes CPT actuels (vidéos, paroles, critiques, etc.) aux CPT artistes et albums.

Comme j'ai une grande quantité dans ma taxonomie d’artistes, y compris de nombreuses métadonnées, je cherche un moyen de transférer les données vers un CPT (et les méta-champs correspondants) - trop à faire à la main.

Quelqu'un d'autre a-t-il ce problème et quelqu'un a-t-il une solution?

UPDATE: J'écris une fonction qui, j'espère, permettra de réaliser ce dont j'ai besoin. Je suis un peu coincé cependant.

function make_posts_from_taxonomy($taxonomy, $post_type) {
// Get all Taxonomy
$args = array(
'parent' => 0
);

$taxonomy = 'hhie_artists';
$post_type = 'hhie_artists';

$terms = get_terms( $taxonomy, $args);

foreach ($terms as $term) {
    get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
    $id = $term->ID;
    $name = $term->name; //Title
    $slug = $term->slug; //Slug
    $description = $term->description; //Description

$new_post = array(  
        'post_title' => $name,
        'post_content' => $description,
        'post_name' => $slug,
        'post_type' => $post_type,
    );
    //Insert post
    wp_insert_post ($new_post);

    } //End foreach

} //End function

Cela a fonctionné. J'ai été en mesure de créer les nouveaux postes CPT. Problèmes restants:

  1. Je n'arrive pas à comprendre comment appeler toutes les métadonnées associées à chaque $term.

  2. Comment puis-je ensuite transmettre chaque métadonnée dans chaque message?

3
JMB

J'ai moi-même résolu ce problème en utilisant une solution assez basique (et jolie), sous la forme d'un plugin. Il est partagé comme un Gist si quelqu'un se heurte au même problème que moi: https://Gist.github.com/Strap1/8053824

3
JMB