2010-07-28 12 views
7

Mam stronę taksonomia-taxonomy.php że musi wyglądać tak:Wordpress - niestandardowa strona taksonomia typu zwyczaj postu szczegóły terminy

CUSTOM POST Typ Tytuł (zasoby)

niestandardowy Taksonomia 1 (typy zasobów)

Typ zasobu Term 1 (White Papers)

  • biała księga post 1

    biały papier po 2

    biały papier po 3

zasobów typu warunku 2 (wideo)

  • wideo dodawać 1

    wideo dodawać 2

    Posty wideo 3

Próbowałem zrozumieć całą nową dokumentację dla Wordpressa 3.0, ale tylko mnie to bardziej zdezorientowało, ponieważ wydaje się być pomieszane z 2.8.

+0

Przepraszamy, trochę zdezorientowany - więc chcesz wyświetlić wszystkie niestandardowe typy postów, skategoryzowane według niestandardowych podatków? – TheDeadMedic

+1

Chcę wyświetlić wszystkie posty niestandardowego typu wpisu posortowane według niestandardowej daty taksonomii. – manon1165

Odpowiedz

1

Hej manon1165, właśnie to osiągnąłem. Był ogromny ból, mam nadzieję, że mój fragment kodu pomoże!

Zrobiłem niestandardowy szablon strony. I zrobił coś na wzór

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

Teraz tylko print_r($cats) i widać szereg kategorii.

Będziesz musiał przekonwertować obiekt na tablicę, tak zrobiłem.

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

zrobiłem

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

nadzieję, że pomoże!

+0

Dzięki, to bardzo pomaga, ale czy możesz mi powiedzieć, jak mogę uzyskać treści z niestandardowych typów postów. Używam niestandardowej wtyczki typu post i chcę uzyskać dane przy użyciu niestandardowej listy kategorii. proszę pomóż mi. –

+0

Naprawdę nie miałem do czynienia z WP w ciągu ostatnich kilku lat. Może zacznij nowe pytanie? – LostInQuery

6

Nie trzeba przekształcać obiektu w tablicę, można doskonale pracować z obiektem bez zbytniego wysiłku. Co jest ciekawy (przynajmniej dla mnie) jest to, że można dostać coś takiego:

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

to w zasadzie, tablicę obiektów, więc masz je traktować w ten sposób. Na przykład, jeśli chcę nazwę pierwszego:

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

Jeśli trzeba wykonać iterację elementów, nadal można używać foreach();.

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

W ten sposób możesz opublikować artykuły z taksonomii.

Dla niestandardowych typów pocztowych, musisz utworzyć pętlę tak:

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

Następnie można utworzyć wiele pętli każdy z jednym dla każdej taksonomii/termin :).

Jeśli chcesz mieć jeszcze więcej ochoty (nie chcesz powtarzać siebie setki razy), możesz dołączyć drugą pętlę do pierwszej i przypisać zmienne do taksonomii (zasoby tj.) I jej warunków (wideo) (z twojego przykładu tylko ostatniego). Pomysł polega na tym, że normalna (typowa) pętla wordpress jest ograniczona do niestandardowych postów typu: i dla każdego z tych terminów.

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

Oczywiście można zrobić odwrotny rzeczy też stworzyć normalną pętlę na niestandardowym typie pojedynczej matrycy (to wygląda jak masz tylko jeden), a wewnątrz zawiera wszystkie warunki niestandardowe.

Niezbyt elegancko, ale to najlepszy sposób, żeby wymyślić: P. Nadzieja, że ​​ktoś może to zrozumieć, brzmi myląco.

Może to być możliwe z funkcją zwrotną ?.

+0

Wystąpił błąd w ostatniej próbce kodu. Powinieneś usunąć; od końca tej linii: "taksonomia" => "nazwa_terminu"; – Pascut

+0

Poprawione. Dziękuję Ci :). –

Powiązane problemy