2010-07-28 7 views
7

Ho una pagina tassonomia-taxonomy.php che ha bisogno di guardare in questo modo:Wordpress - pagina tassonomia personalizzato di tipo messaggio personalizzato Inserite da termini

CUSTOM POST TIPO TITOLO (risorse)

personalizzato Tassonomia 1 (Tipi di risorse)

tipo di risorsa Term 1 (White Papers) posta

  • Libro bianco 1

    Libro bianco inviare post 2

    Libro bianco 3

tipo di risorsa Term 2 (Video)

  • Video Posta 1

    Video Posta 2

    Post dei video 3

Ho cercato di dare un senso a tutta la nuova documentazione per Wordpress 3.0, ma solo mi ha fatto più confuso come sembra essere mescolati con 2.8.

+0

Siamo spiacenti, un po 'confusi - quindi vuoi elencare tutti i tipi di post personalizzati, categorizzati da una tassa doganale? – TheDeadMedic

+1

Desidero elencare tutti i post di un tipo di post personalizzato, ordinati per termine di tassonomia personalizzato. – manon1165

risposta

1

Ehi manon1165, in realtà ho appena compiuto questo. È stato un grande dolore, si spera che il mio frammento di codice aiuterà!

Ho creato un modello di pagina personalizzato. E ha fatto qualcosa sulla falsariga di

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

Ora, print_r($cats) e vedrete la matrice delle categorie.

Sarà necessario convertire l'oggetto in un array, l'ho fatto con.

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

ho fatto

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

Speranza che aiuta!

+0

Grazie, aiuta molto ma puoi dirmi come posso ottenere il contenuto da tipi di post personalizzati. Uso un plug-in personalizzato del tipo di post e desidero ottenere i dati utilizzando l'elenco di categorie personalizzate. mi aiuti per favore. –

+0

Non ho mai avuto a che fare con WP negli ultimi due anni. Forse iniziare una nuova domanda? – LostInQuery

6

Non è necessario trasformare l'oggetto in un array, è possibile lavorare perfettamente con l'oggetto senza troppi problemi. Ciò che è curioso (almeno per me), è che si ottiene qualcosa di simile:

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

E 'fondamentalmente, un array di oggetti, in modo che hai per trattare in quel modo. Per esempio se voglio il nome del primo:

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

Se è necessario scorrere gli elementi, è comunque possibile utilizzare foreach();.

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

In questo modo è possibile pubblicare gli articoli dalla propria tassonomia.

Per i tipi di messaggi personalizzati, dovrete creare un ciclo come questo:

$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; 

Quindi è possibile creare più cicli ciascuno di uno per ogni tassonomia/termine :).

Se si desidera ottenere ancora più fantasia (non si desidera ripetere se stessi un centinaio di volte) è possibile includere il secondo ciclo all'interno del primo e assegnare le variabili alla tassonomia (risorse ie) e ai termini che ha (video) (dal tuo esempio solo l'ultimo). L'idea è che avresti un ciclo di wordpress normale (tipico) limitato al post-tipo personalizzato e ciascuno dei termini.

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

Ovviamente si può fare la cosa inversa troppo, creare il ciclo normale per un tipo personalizzato singolo modello (E 'Sembra che tu abbia solo uno), e al suo interno include tutti i termini personalizzati.

Non molto elegante, ma questo è il modo migliore in cui posso inventarlo: P. Spero che qualcuno possa capirlo, suona confuso.

Forse potrebbe essere possibile con alcune funzioni di richiamata ?.

+0

Hai un errore nel tuo ultimo esempio di codice. Dovresti rimuovere il; dalla fine di questa riga: 'taxonomy' => "$ term_name"; – Pascut

+0

corretto. Grazie :). –