Wsparcie » Zaawansowane » Niestandardowe kategorie niestandardowych postów, pętla, kategorie

  • Zrobiłem sobie pętlę wyświetlającą posty danej kategorii.
    mam zrobione posty niestandardowe oraz kategorie niestandardowe.

    Do danej kategorii prowadzi link w menu, w ten sposób wyświetla się tylko to co należy do danej kategorii.

    Problem polega na tym, że chcę by najpierw wyświetlały się posty kategorii głównej, a dopiero zupełnie poniżej wyświetlały się posty podkategorii ale na tej samej stronie. Jednak by one były jakoś od siebie odseparowane. Grupy będzie też opisywał opis kategorii i podkategorii.

    Czyli by kategorie były wylistowane jako jedna grupa, a każde odrębne podkategorie jako osobne grupy lecz na jednej stronie maj być kategoria główna wraz z podkategoriami należącymi do tej kategorii.

    Czyli mamy dajmy na to taki układ:

    kat_główna_1

    podkat_1_a
    podkat_1_b
    podkat_1_c

    kat_główna_2

    podkat_2_a
    podkat_2_b
    podkat_2_c

    kategoria główna1 jednej wraz z podkategoriami są na jednej stronie.
    A kategoria główna 2 na inne stronie.

    Chciałbym, żeby posty wyświetlały się tak samo czyli jako tabela przedstawiająca pliki do pobrania.
    Posty są listą plików (ebooki).

    Czyli grupa na samej górze (przedstawiona w tabeli) była by

    kat _główna_1
    opis kategorii
    i tutaj lista plików…

    poniżej

    opis podkategorii
    lista plików dla podkategorii podkat_1_a

    Nie wiem czy jasno to opisałem.

    W jaki sposób to zrobić?

Viewing 7 replies - 1 through 7 (of 7 total)
  • To może pociągnę tą kwestię dalej.

    Znalazłem rozwiązanie:

    http://snipplr.com/view/57998/

    Jednak problem polega na tym, że jeśli mamy główną kategorię i podkategorię, to wyświetlają się w kategorii głównej również pliki z podkategorii przypisanej do kategorii głównej.

    Jak temu zapobiec?

    Skoro posty przypisałem do danej podkategorii, nie chcę by wyświetlały się w kategorii głównej.

    Chcę by pliki przypisane do kategorii wyświetlały się pod kategorią główną, a pliki w podkategorii pod tą kategorią.

    W zasadzie chodzi o ten sam problem, który ma ten uzytkownik.
    http://wordpress.stackexchange.com/questions/59781/list-posts-for-terms-of-a-custom-taxonomy-for-any-post-type

    Czy nikt nie zna odpowiedzi? Siedzę nad tym już dośc długo i oczęta wychodzą mi z orbit.

    Upraszczając zapytanie.

    Chodzi mi o to, by w kategoriach niestandardowych Rodzic nie duplikował zawartości, która występuje w Dzieciach.

    Czyli w kategorii nadrzędnej pojawia się to co jest w podkategorii. przy mojej koncepcji projektu to bez sensu.

    Czyli jeśli dzieci mają jakieś wpisy, to pojawiają się one również u rodzica.

    Jak to zmienić?

    Wydaje mi się, że coś takiego powinno Ci pomóc:

    function my_pre_get_posts($query) {
        if ( is_category() ) {
            if ( array_key_exists('cat', $query->query_vars) ) {
                $query->set('tax_query', array( array(
                    'include_children'=>false,
                    'taxonomy'=>'category',
                    'terms'=>array($query->query_vars['cat']),
                    'operator'=>'IN')
                ));
            }
        }
        return $query;
    }
    add_filter( 'pre_get_posts', 'my_pre_get_posts' );

    Pisane na szybko, więc radziłbym sprawdzić przed ostatecznym, oficjalnym wrzuceniem na stronę.

    Dzięki za odpowiedź.

    Niestety po dodaniu tej funkcji nie nastąpiły żadne widoczne zmiany.

    W moim przypadku sprawa dotyczy niestandardowych postów i niestandardowych kategorii(taksonomii kategorii). Być może dlatego nie wpłynęło to w żaden sposób na wyświetlanie kategorii i subkategorii.

    W tym kodzie masz fragment 'taxonomy' => 'category', jeśli chcesz go używać do swoich taksonomii, to musisz oczywiście category zmienić na swoją taksonomię…

    No i także dopasować ifa tak, aby query było modyfikowane na stronie archiwum Twojej taksonomii, a nie kategorii.

    Tak oczywiście to zmieniłem na własną taxonomię.

    Z ifami mam problem gdyż nie wiem co za co odpowiada. Już się w całej pętli pogubiłem szukając właściwych rozwiązań.

    Może przedstawię na czym bazuję. Oto pętla, która w miarę poprawnie wyświetla całość nie licząc problemu z duplikatami u „rodziców”.
    Czyli rodzice wyświetlają wpisy, które powinny należeć wyłącznie do dzieci.

    <?php
        $post_type = 'pliki_ebooki';
        $tax = 'kategorieebooki_kategorie';
        $tax_terms = get_terms($tax);
    	//print_r ($tax_terms);	
    
        if ($tax_terms) {
        foreach ($tax_terms as $tax_term) {
        $args = array(
        'post_type' => $post_type,
        "$tax" => $tax_term->slug,
        'post_status' => 'publish',
        'orderby' => 'datetime',
        'order' => 'DESC',
        'posts_per_page' => -1,
        'caller_get_posts'=> 1,
    
    	'tax_query' => array(
        array(
            'taxonomy' => 'kategorieebooki_kategorie',
            'field' => 'slug',
            'terms' => $term,
        )
       )
        );
    
        $my_query = null;
        $my_query = new WP_Query($args);
    
        if( $my_query->have_posts() ) : ?>
        <h2 class="produktgrupp"><?php echo $tax_term->name; ?></h2>
    	<?php echo $tax_term->description; ?>
    
        <ul class="produktlistning">
        <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
        <li id="post-<?php the_ID(); ?>">
        <a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
        <?php the_title(); ?>
        </a>
    	</li>
        <?php endwhile; // end of loop ?>
        </ul>
        <?php else : ?>
        <?php endif; // if have_posts()
        wp_reset_query();
        } // end foreach #tax_terms
        }
        ?>

    To jest tylko szkic. Przy takiej konstrukcji pętli wynik wygląda tak:

    *******************
    kategoria_główna1
    opis kategorii głównej1

    ebok-10
    jakiś plik 2
    jakiś plik 3
    plik w głównej kategorii

    -podkategoria1
    opis podkategorii1

    jakiś plik 3

    -podkategoria2
    opis podkategorii2

    ebok-10
    jakiś plik 2

    –pod-podkategoria1 będąca dzieckiem podkategorii 2
    opis pod-podkategorii1

    ebok-10
    *******************

    Czyli jak widzisz, pojawiają się duplikaty w kategorii nadrzędnej z podkategorii mimo, że każdy z wpisów jest przypisany do konkretnej jednej kategorii/podkategorii.

    W jaki sposób zatem dostosować tą funkcję do mojej pętli?
    Gdyż szczerze mówiąc próbowałem ale najwidoczniej mnie to przerasta albo już jestem wypalony brakiem progresu i nie potrafię się wystarczająco skoncentrować.

    Jeśli tworzysz zupełnie własną pętlę, to w ogóle nie musisz tego filtra stosować. Po prostu użyj właściwych parametrów dla WP_Query.

    W tym przypadku musisz zmienić część:

    'tax_query' => array(
        array(
            'taxonomy' => 'kategorieebooki_kategorie',
            'field' => 'slug',
            'terms' => $term,
        )
    )

    na coś w tym stylu:

    'tax_query' => array(
        array(
            'include_children'=>false,
            'taxonomy' => 'kategorieebooki_kategorie',
            'terms'=>array( intval($TERM_ID) ),
            'operator'=>'IN'
        )
    )

    Oczywiście $TERM_ID to musi być prawidłowy ID termu.

Viewing 7 replies - 1 through 7 (of 7 total)
  • The topic ‘Niestandardowe kategorie niestandardowych postów, pętla, kategorie’ is closed to new replies.