Wsparcie » Używanie i konfiguracja WordPressa » Pętla wyświetlająca wpisy wg. custom taxonomies

  • Rozwiązano martinezpl

    (@martinezpl)


    Witam, jak w temacie. Chciałbym wyświetlić na stronie wpisy (custom post type) wg nadanego im tagu (custom taxonomy). Jak powinien wygladać taki kod? Męczę to już drugi dzień bez powodzenia. Z góry dziękuję z pomoc.

Viewing 4 replies - 1 through 4 (of 4 total)
  • Możesz to zrobić na kilka sposobów. Wyjaśnię na przykładzie.

    Załóżmy, że utworzyłeś sobie post_type o nazwie oferta i dodałeś do niego dwie taksonomie: rejon i branza. Czyli w pliku functions.php zrobiłeś:

    add_action('init', 'oferta_register');
    
    function oferta_register() {
    	$args = array(
        	'label' => __('Oferty'),
        	'singular_label' => __('Oferta'),
        	'public' => true,
        	'show_ui' => true,
        	'capability_type' => 'post',
        	'hierarchical' => false,
        	'rewrite' => true,
        	'supports' => array('title', 'editor', 'thumbnail')
        );
    
    	register_post_type( 'oferta' , $args );
    }
    
    register_taxonomy("rejon", array("oferta"), array("hierarchical" => true, "label" => "Rejony", "singular_label" => "Rejon", "rewrite" => true));
    register_taxonomy("branza", array("oferta"), array("hierarchical" => true, "label" => "Branze", "singular_label" => "Branza", "rewrite" => true));

    Dodałeś kilka wpisów tego post typu i teraz chcesz wyświetlić oferty z rejonu dolnośląskiego i branży budownictwo.

    Parametry do query możesz przekazać na różne sposoby:
    Sposób 1:
    $args = 'branza=budownictwo&rejon=dolnoslaskie';

    Sposób 2:
    $term1 = 'budownictwo’;
    $term2 = 'dolnoslaskie’;
    $args = 'branza=’. $term1 . '&rejon=’.$term2;

    Sposób 3:
    $args = array(
    'branza’ => budownictwo,
    'rejon’ =>dolnoslaskie
    );

    Uwaga: sposoby 1-3 są OK, jeśli nie masz innych post typów, którym przypisano taksonomię branza. Jeśli natomiast chcesz się dodatkowo ograniczyć do tego post typu, to piszesz:

    $args = array(
      'rejon' => 'dolnoslaskie',
      'braza' => 'budownictwo',
      'post_type' => 'oferta',
    );

    A samo query dla wszystkich tych sposobów wygląda standardowo:
    `query_posts( $args );
    if ( have_posts() ) while ( have_posts() ) : the_post();
    echo '<h2>’ . $post->post_title . '</h2>’;
    the_content();
    endwhile;
    else
    echo '<h2>Nothing found</h2>’;

    Aj, niechcący mi się wysłało, zanim ubrałam wszystkie kody w tagi.
    Jeszcze raz samo query:

    query_posts( $args );
    if ( have_posts() ) while ( have_posts() ) : the_post();
      echo '<h2>' . $post->post_title . '</h2>';
        the_content();
      endwhile;
     else
      echo '<h2>Nothing found</h2>';

    Thread Starter martinezpl

    (@martinezpl)

    Działa! 🙂 Wszystko idealnie. Dzięki wielkie!

    Kilkanaście sekund później…

    Działa idealnie, tylko jak to wyświetlić w divach?
    Mam tak:

    <?php $args = array(
      'kategoria_produktu' => 'promocja',
    	'post_type' => 'jakis_produkt',
    ); ?>
    
    <?php query_posts( $args );
    if ( have_posts() ) while ( have_posts() ) : the_post();
    the_excerpt();
    echo apply_filters('the_content', get_post_meta($post->ID, 'cena', true));
    the_content();
    endwhile;
    else
    echo '<h2>Nothing found</h2>'; ?>

    I ładnie wypisuje treść, tylko jak to ubrac w div-y? Np:

    <?php $args = array(
      'kategoria_produktu' => 'promocja',
    	'post_type' => 'jakis_produkt',
    ); ?>
    
    <?php query_posts( $args );
    if ( have_posts() ) while ( have_posts() ) : the_post();
    
    <div><h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2></div>
    
    <div><?php echo apply_filters('the_content', get_post_meta($post->ID, 'cena', true)); ?></div>
    
    the_content();
    endwhile;
    else
    echo '<h2>Nothing found</h2>'; ?>

    Bo tak jak powyżej oczywiście nie działa?

    Thread Starter martinezpl

    (@martinezpl)

    Ok, poradziłem sobie. Jeszcze raz dzięki!

Viewing 4 replies - 1 through 4 (of 4 total)
  • Temat ‘Pętla wyświetlająca wpisy wg. custom taxonomies’ jest zamknięty na nowe odpowiedzi.