Šta je novo?

Prikaz postova kategorije u Wordpress-u

  • Začetnik teme Začetnik teme Silni
  • Datum pokretanja Datum pokretanja

Silni

Cenjen
Učlanjen(a)
10.09.2012
Poruke
18
Poena
154
Pokušavam da odradim jedan informativno-zabavni portal pa imam jedno pitanjce za koje se nadam da ću naći pomoć ovde

Želeo bih da mi se sve kategorije ne prikazuju u category.php(mislim lista postova kategorije), već neke odrećene na stranici koju bih kreirao posebno za tu kategoriju.
Dobro stojim sa html i css, dok sa php nešto površno.

CMS koji koristim za izradu: WP 3.4.2
 
Napravis kategoriju i dodas je u poseban meni koji sam kreiras. Meni te nece voditi na kategoriju vec na: /wordpress/category/computers/ na primer...
 
Nisam sigurno da si dobreo postavio pitanje pa cu pokusati da desifrujem sta si hteo da kazem, a ti me ispravi ako gresim.

Ti hoces da prikazes samo odredjene postove u jednoj categoriji, a ne sve postove kao sto category.php po default-u radi?

Da bi to postigao moras da kreiras novi file koji ce se zvati category-{category_id}.php. {category_id} je id tvoje kategorije iz koje zelis da prikazes samo par postova a ne sve. Da bi odredio id te kategorije ides u Posts->Categories u admin sekciji. Tamo su izlistane sve kategorije. Predji misem preko katgorije ciji ID trazis i videces da vodi na link koji ima &tag_ID=nekibroj . Taj broj je u stvari ID te kategorije. Primera radi - reci cemo da je ID = 3.

Kopiraj category.php u tvojoj temi u fajl category-3.php . Trebao bi da imas sledece na pocetku tog fajla:



Treba da dodas sledece linije

Kod:
<?php
/**
 * The template for displaying Category Archive pages.
 *
 * @package WordPress
 * @subpackage Twenty_Eleven
 * @since Twenty Eleven 1.0
 */
[B]global $wp_query;
$args = array_merge( $wp_query->query_vars, array( 'post__in' => array(1,2,3) ) );
query_posts( $args );[/B]

get_header(); ?>

Pri cemu ovaj deo

Kod:
array( 'post__in' => array(1,2,3) )

Treba da u sebi sadrzi niz post id-jeva koje zelis da dodas. Time ces postove tog id-ja da prikazes na stranici neke kategorije a ne sve postove iz te kategorije.

Za spisak modofikatora osnovnog loop-a mozes da pogledas http://codex.wordpress.org/Class_Reference/WP_Query#Parameters . Mozes da filtriras po ID-ju kategorije, taga, post-a, page-a i mnogim drugim parametrima.

Postoji bolji nacin (po resurse) da se ovo uradi.

U svojoj temi bi trebao da imas functions.php ili ako nemas da ga kreiras. U njega dodajes

Kod:
add_action( 'pre_get_posts', 'modify_category' );
function modify_category( $query ) {
    if ( is_category (3) ) /*ovde proveravas da li se prikazuje arhiva kategorije sa id-jem 3 - stavi ovde id svoje kategorije*/
    {
        $query->set( 'post__in', array(1,2,3) ); /*stavi ovde id svojih postova*/
    }
}


Realno, da ne bi morao manuelno da menjas listu post ID-jeva svaki put kada dodas novi post, trebao bi da prikazujes postove iz neke podkategorije ili sa nekim tagom, ali to izlazi van okvira tvog pitanja.
 
Hvala na odgovoru, rešio si mi veiki problem 🙂
Ja sam želeo da mi se odredjena kategorija (naprimer "SPORT") prikazuje na posebnoj stranici koju ću da kreiram baš za tu kategoriju i u okviru te stranice da mi se svi postovi kategorije (SPORT) prikazuju tu, a ne samo odredjeni postovi kao u tvom primeru( ti si otišao i korak dalje) 😀

Rešio sam to ovako:
Kod koji si mi ti napisao:
Kod:
array( 'post__in' => array(1,2,3) )
sam jednostavno ispravio u:
Kod:
array( 'post__in' => array() )
i to je to, prikazuju mi se svi postovi kategorije (SPORT) na posebnoj stranici koju sam prethodno kreirao po tvojim upustvima.HVALA!!!
 
Tacnije to se sve radi u okviru loop-a, nema potrebe za bilo kakvim kverijem.
 
Nista od ovoga sto sam ti napisao onda ti ne treba. Wordpress po default-u prikazuje sve postove iz neke kategorije kada pristupis URL-u www.imesajta.com/category/ime_kategorije/ . On tada koristi fajl category-$id.php, ili ako njeha nema category.php, koij se nalazi u temi. Nikakav dodatni kod ti nije potreban. Jedino sto mozes jeste da modifikujes category.php ili kreiras category-$id.php da bi promenio izgled stranice koja prikazuje sve postove iz te kategorije.
 
Napisati u htaccess sledece:

RewriteRule ^category/(.+)$ /$1 [R=301,L]

ili instalirati No Category Base plugin.
 
Nista od ovoga sto sam ti napisao onda ti ne treba. Wordpress po default-u prikazuje sve postove iz neke kategorije kada pristupis URL-u www.imesajta.com/category/ime_kategorije/ . On tada koristi fajl category-$id.php, ili ako njeha nema category.php, koij se nalazi u temi. Nikakav dodatni kod ti nije potreban. Jedino sto mozes jeste da modifikujes category.php ili kreiras category-$id.php da bi promenio izgled stranice koja prikazuje sve postove iz te kategorije.

Ako bas zeli neku specificnu personalizaciju moze da koristi i query_posts kako bi napravio svoj loop.
 
Nazad
Vrh Dno