Problem z menu i wybranymi wpisami
-
Jestem administratorem strony która nie posiada panelu administracyjnego. Chciałbym teraz podpiąć ją pod WordPress. I tutaj napotykam problem.
Strona posiada 2 menu. Jedno, poziome na górze strony które jest stałe.
Problem jest z menu pionowym. Chciałbym zrobić tak, że po wybraniu którejś pozycji z menu poziomego przenosiło mnie do podstrony kategorii a po lewej stronie w sidebar pojawiała się lista wpisów z danej kategorii.
Wiem jak zrobić wyświetlanie wpisów tylko z jednej kategorii ale nie wiem jak uzależnić które wpisy mają być wyświetlane od wybranej kategorii.
Byłbym wdzięczny za pomoc.
-
Domyślnie jak wchodzisz na stronę jakiejś kategorii, to się wyświetlają wpisy z tej kategorii, tylko zazwyczaj nie w sidebarze, a gdzieś na środku strony jako zajawki albo wypisy.
Jeżeli wpisy mają być w sidebarze, to do czego Ci tak naprawdę strona kategorii i jej cały środek?
Lista wpisów. Nie precyzyjnie określiłem.
Nie ma znaczenia, edytując pliki szablonu można sobie wywalić funkcję the_content(), i też tak jakby będzie lista wpisów.
Więc, wyjaśnij mi rolę jaką ma odgrywać strona kategorii, skoro w sidebarze mają się wyświetlać tytuły wpisów, a na środku … co?
Tutaj masz jak to wygląda w chwili obecnej. Klikasz na szkolenia, po lewej stronie pojawia Ci się menu, po prawej 3 wpisy. 🙂
W takim razie, aby się nie rozpisywać ponownie, zajrzyj tutaj:
http://www.wordpress.org.pl/index.php?s=&showtopic=11324&view=findpost&p=36612Zamiast
cat=-1możesz daćcat=5– wtedy będą się wyświetlały wpisy z kategorii o ID 5. Jedynym Twoim problemem w tym momencie będzie wyciągnięcie ID obecnie przeglądanej kategorii, ale myślę że znajdziesz jakąś funkcję WP albo prosty kod który Ci to zrobi, i wtedy tylko dasz np.cat='.$cat_id.'… proponuję w google takiego czegoś szukać, u mnie to zawsze działa 😉Acha, i od razu lekturka, poznaj niezliczone możliwości pętli w WP:
http://codex.wordpress.org/Function_Reference/query_posts<?php if ( is_category()) { $nr_cat = get_the_category(); query_posts('cat=$nr_cat'); if(have_posts()) : while(have_posts()): the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; } else { query_posts('cat=1'); if(have_posts()) : while(have_posts()): the_post();?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; endif; } ?>Niestety wyświetla wszystkie wpisy.
Niestety inaczej być nie może, jak już pisałem, musisz znaleźć sposób na zdobycie ID obecnie wyświetlanej kategorii, ten Twój obecny niestety nie działa, zobacz dlaczego:
http://codex.wordpress.org/Function_Reference/get_the_category
Nie działa dlatego że get_the_category zwraca tablice wyników ? Nie znasz sposobu by wzdobyc id kategori ?
Już pisałem wyżej że ja nie znam, nie pamiętam tego wszystkiego, od tego jest codex albo google – i w tym wypadku google przychodzi z pomocą, wystarczyło zapytać o 'wordpress get the id of current category’:
http://www.whypad.com/posts/wordpress-get-category-id-while-on-a-category-page/669/
Ok 🙂 Dzięki wielkie.
Edit. Nie działa.
<?php function getCurrentCatID(){ global $wp_query; if (is_category() || is_single()){ $cat_ID = get_query_var('cat'); } return $cat_ID; } ?> <?php if ( is_category()) { wp_reset_query(); query_posts('cat=$cat_ID'); if(have_posts()) : while(have_posts()): the_post(); ?> <li><a>"><?php the_title(); ?></a></li> <?php endwhile; endif; } else { wp_reset_query(); query_posts('cat=1'); if(have_posts()) : while(have_posts()): the_post();?> <li><a>"><?php the_title(); ?></a></li> <?php endwhile; endif; } ?>Spróbuj tą funkcję zapisać do pliku functions.php, i w odpowiednim miejscu daj bodajże <?php echo getCurrentCatID(); ?>, albo bez echo – kombinuj.
Postaram się, ale to już jutro. 🙂 Dzięki za pomoc. Jak coś to będę pisał.
<?php if ( is_category() || is_single()) { $nr_cat = get_the_category(); wp_reset_query(); query_posts('cat=' . $nr_cat[0]->cat_ID); if(have_posts()) : while(have_posts()): the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; endif; } else { wp_reset_query(); query_posts('cat=1'); if(have_posts()) : while(have_posts()): the_post();?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> </li> <?php endwhile; endif; } ?>To działa poprawnie. WordPress 3.0.1 🙂 Jakby ktoś potrzebował.
Temat ‘Problem z menu i wybranymi wpisami’ jest zamknięty na nowe odpowiedzi.