2010-07-28 7 views
7

J'ai une page taxonomie taxonomy.php qui doit ressembler à ceci:Wordpress - page taxonomie personnalisée de cotation type de poste personnalisé par des termes

SUR MESURE TYPE DE POSTE TITRE (RESSOURCES)

taxonomie personnalisée 1 (Types de ressources)

type de ressource terme 1 (Livres blancs)

  • poste Livre blanc 1

    poste Livre blanc 2

    Livre blanc après 3

Type de ressource terme 2 (Vidéos)

  • publier des vidéos 1

    Vidéos Post 2

    Vidéos postées 3

essayions de comprendre de tous les nouveaux documents pour Wordpress 3.0, mais il ne me fait plus confus car il semble être mélangé avec 2,8.

+0

Désolé, peu confus - donc vous voulez lister tous vos types de messages personnalisés, classés par une taxe personnalisée? – TheDeadMedic

+1

Je souhaite répertorier tous les articles d'un type de publication personnalisé, triés par terme de taxonomie personnalisé. – manon1165

Répondre

1

Hé manon1165, je viens d'accomplir cela. Était une énorme douleur, j'espère que mon extrait de code aidera!

J'ai créé un modèle de page personnalisé. Et a fait quelque chose le long des lignes de

<?php $categories = get_terms('taxonomy-name', 'orderby=name&hide_empty=0'); $cats = object_to_array($categories); ?> 

Maintenant, juste print_r($cats) et vous verrez le tableau des catégories.

Vous aurez besoin de convertir l'objet en tableau, je l'ai fait avec.

function object_to_array($data) 
{ 
    if(is_array($data) || is_object($data)) 
    { 
    $result = array(); 
    foreach($data as $key => $value) 
    { 
     $result[$key] = object_to_array($value); 
    } 
    return $result; 
    } 
    return $data; 
} 

j'ai fait

<ul id="cat-list"> 
<?php foreach($cats as $cat) { ?> 
    <li><a href="/taxonomy-name/<?php echo $cat['slug']; ?>"><?php echo $cat['name']; ?> (<?php echo $cat['count']; ?>)</a><br><?php echo $cat['description']; ?></li> 
<?php } ?> 
</ul> 

Hope qui aide!

+0

Merci, cela aide beaucoup, mais pouvez-vous s'il vous plaît me dire comment je peux obtenir du contenu à partir de types de messages personnalisés. J'utilise un plugin de type post personnalisé et je veux obtenir des données en utilisant une liste de catégories personnalisées. Aidez-moi, s'il vous plaît. –

+0

Je n'ai pas vraiment eu affaire à WP ces deux dernières années. Peut-être commencer une nouvelle question? – LostInQuery

6

Il n'est pas nécessaire de transformer l'objet en tableau, vous pouvez parfaitement travailler avec l'objet sans trop de tracas. Ce qui est curieux (au moins pour moi), est que vous obtenez quelque chose comme ceci:

Array 
    (
     [0] => stdClass Object 
      (
       [term_id] => 7 
       [name] => Magister comunicaciones aplicadas 
       [slug] => magister-comunicaciones-aplicadas 
       [term_group] => 0 
       [term_taxonomy_id] => 7 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 4 
     ) 

     [1] => stdClass Object 
      (
       [term_id] => 8 
       [name] => Engagement marketing 
       [slug] => engagement-marketing 
       [term_group] => 0 
       [term_taxonomy_id] => 8 
       [taxonomy] => linea-de-estudio 
       [description] => 
       [parent] => 0 
       [count] => 5 
     ) 
) 

Il est fondamentalement, un tableau d'objets, de sorte que vous avez à les traiter de cette façon. Par exemple, si je veux le nom du premier:

$myterms = get_terms('taxonomy-name', 'orderby=none&hide_empty');  
echo $myterms[0]->name; 

Si vous devez parcourir les éléments, vous pouvez toujours utiliser foreach();.

foreach ($myterms as $term) { ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 
} ?> 

De cette façon, vous pouvez publier les articles de votre taxonomie.

Pour les types de poste personnalisé, vous devrez créer une boucle comme ceci:

$args = array(
    'post_type' => 'post-type-name', 
    'taxonomy' => 'term' 
    //for example 
    //'resources' => 'videos' 
); 

// assigning variables to the loop 
global $wp_query; 
$wp_query = new WP_Query($args); 

// starting loop 
while ($wp_query->have_posts()) : $wp_query->the_post(); 

the_title(); 
blabla.... 

endwhile; 

Ensuite, vous pouvez créer plusieurs boucles chacune d'une taxonomie pour chaque/terme :). Si vous voulez encore plus de fantaisie (vous ne voulez pas vous répéter une centaine de fois), vous pouvez inclure la deuxième boucle dans le premier et assigner des variables à la taxonomie (ressources ie) et aux termes qu'elle a (vidéos) (de votre exemple seulement le dernier). L'idée est que vous auriez une boucle wordpress normale (typique) limitée au type de post personnalisé et chacun des termes.

foreach ($myterms as $term) : ?> 
    <li><a href="<?php echo $term->slug; ?>"><?php echo $term->name; ?></a></li> <?php 

     $term_name = $term->slug; 

     $args = array(
     'post_type' => 'post-type-name', 
     'taxonomy' => "$term_name" 
     ); 

    // assigning variables to the loop 
    global $wp_query; 
    $wp_query = new WP_Query($args); 

    // starting loop posting only 
    while ($wp_query->have_posts()) : $wp_query->the_post(); 

    the_title(); 
    blabla.... 

    endwhile; 

endforeach; ?> 

Il est évident que vous pouvez faire aussi la chose inverse, créer la boucle normale pour un type personnalisé unique modèle (il est semble que vous avez un seul), et comprend l'intérieur de tous les termes personnalisés.

Pas très élégant, mais c'est la meilleure façon de le faire: P. Espérons que quelqu'un puisse comprendre cela, semble confus.

Peut-être que cela pourrait être possible avec certaines fonctions de rappel?

+0

Vous avez une erreur dans votre dernier exemple de code. Vous devriez enlever le; à la fin de cette ligne: 'taxonomy' => "$ term_name"; – Pascut

+0

Corrigé. Je vous remercie :). –