Afișează categoriile dintr-un tip de postare personalizat

18 feb. 2011, 12:59:53
Vizualizări: 69.9K
Voturi: 4

Am creat un tip de postare personalizat 'Portfolio' și sub acest tip de postare am creat categorii Portfolio cu următorul cod

functions.php - următorul este codul pentru tipul de postare personalizat pe care l-am definit în pagina functions.php

function demo_register_post_type() {
            register_post_type('Portfolio', array(
                'labels' => array(
                    'name' => __('Portfolio'),
                    'singular_name' => __('Portfolio'),
                    'add_new' => 'Adaugă Portfolio Nou',
                    'edit_item' => 'Editează Portfolio',
                    'new_item' => 'Portfolio Nou',
                    'view_item' => 'Vezi Portfolio',
                    'search_items' => 'Caută Portfolio',
                    'not_found' => 'Nu s-a găsit niciun Portfolio',
                    'not_found_in_trash' => 'Nu s-a găsit niciun Portfolio în Coș',
                    'show_ui' => true,
                    'show_in_menu' => true,
                    'capability_type' => 'post',
                    'hierarchical' => false,
                    'rewrite' => true,
                    'query_var' => true
                ),
                'menu_position' => 6,
                'public' => true,
                'supports' => array(
                    'title','editor','author','thumbnail','excerpt','comments','page-attributes'
                ),
                'rewrite' => array( 'slug' => 'portfolio', 'with_front' => false ),
                'taxonomy' => array('category', 'post_tag')
            ));

        register_taxonomy( 'portfolio-category', 'Portfolio', array ('hierarchical' => true, 'label' => __('Categorii Portfolio')));  // categorii portfolio

Acum vreau să preiau toate categoriile din acest tip de postare și să afișez postările din categorii pe pagină?

Vă rog să-mi spuneți cum aș putea face acest lucru?

Mulțumesc.

2
Comentarii

De ce două taxonomii diferite pentru categorii? Ai taxonomia personalizată portfolio-category înregistrată, dar în plus activezi și taxonomia obișnuită de categorie pentru acest tip de post, de ex. 'taxonomy' => array('category', 'post_tag'), ai nevoie de ambele?

t31os t31os
18 feb. 2011 14:11:46

Da, am nevoie de ambele categorii, deoarece vreau să adaug detalii portofoliului la categoriile mele de portofoliu și nu vreau să afișez categoriile de portofoliu pe blog sau în altă parte a site-ului. De aceea folosesc două categorii.

User User
23 feb. 2011 09:00:49
Toate răspunsurile la întrebare 3
0

Ce zici de folosirea funcției get_terms()?

Exemplu rapid:

$terms = get_terms('portfolio-category');

foreach ( $terms as $term ) {
   echo $term->name.'<br />';
}
18 feb. 2011 13:54:03
0

Pentru a obține postările din tipul tău personalizat de postare, trebuie să interoghezi post_type și poți face asta în felul următor:

<?php query_posts(array( 'post_type' => 'Portfolio' )); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

 <div class="post">

 <!-- Afișează Titlul ca link către permalink-ul Postării. -->
 <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Legătură Permanentă către <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

 <!-- Afișează data (în formatul 16 Noiembrie, 2009) și un link către alte postări ale aceluiași autor. -->
 <small><?php the_time('j F, Y') ?> de <?php the_author_posts_link() ?></small>

  <div class="entry">
    <?php the_content(); ?>
  </div>

  <p class="postmetadata">Postat în <?php the_category(', '); ?></p>
 </div> <!-- închide primul div -->

 <?php endwhile; else: ?>
 <p>Ne pare rău, nicio postare nu corespunde criteriilor tale.</p>
 <?php endif; ?>

Dacă dorești să obții postări din Portfolio care aparțin unui anumit termen din taxonomia ta personalizată, atunci adaugă argumentul taxonomy în array-ul query_posts astfel:

<?php query_posts(array( 'post_type' => 'Portfolio','portfolio-category' => 'numele-categoriei' )); ?>

Sper că te ajută.

18 feb. 2011 13:42:37
0

Încearcă acest cod, funcționează. Mulțumește-mi mai târziu.

   $term_args = array(
                'post_type'              => 'portfolio',
                 'taxonomy'               => 'project-type',
                'hide_empty'             => true,
                'fields'                 => 'all'
              );
   $term_query = new WP_Term_Query( $term_args );
9 feb. 2021 14:42:13