Omezení výpisu příspěvků (např. podle autora, rubriky) na homepage za použití funkce query_posts()

Tato situace se často opakuje, některé rubriky prostě nemají ze své podstaty (např. mnoho krátkých příspěvků) místo na homepage, takže je tam nechcete zobrazovat. Řešení je velmi jednoduché, kdy stačí přidat pouze jeden řádek kódu v šabloně. Protože jde o homepage, musíte upravit soubor index.php v adresáři s šablonou (budu to ukazovat na příkladu defaultní šablony z WordPressu 2.8.4). Najděte místo, kde začíná výpis příspěvků, tedy něco podobného (může se lišit třeba chybějícími uvozovacími php tagy) tomuto kódu:

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>

A před tento kód přidejte následující řádek:

<?php query_posts('author=-3&cat=-3'); ?>

Co se přesně stane? Právě jste upravili výpis příspěvků na homepage tak, že se budou zobrazovat všechny příspěvky kromě těch, které jsou v rubrice s ID = 3 a od autora s ID = 3. Jednotlivá ID naleznete v administraci a změňte si je samozřejmě podle svých potřeb. Pokud je tam před nimi znaménko minus, tak jsou z výpisu dané příspěvky vyloučeny a naopak, pokud tam minus nebude, tak se zobrazí příspěvky pouze z této rubriky a od tohoto autora. Každopádně doporučuji prohlédnout manuál, který se všemi parametry funkce query_posts() detailně zabývá.

22 thoughts on “Omezení výpisu příspěvků (např. podle autora, rubriky) na homepage za použití funkce query_posts()”

  1. Ahoj,
    tak takhle mi to nefungovalo, běželo to až když jsem přidal před ten kod tohle:
    < ?php if (is_home()) { query_posts("cat=-5,-6"); } ?>

  2. Díky za reakci, ale ta podmínka is_home() podle mě není vůbec potřeba, pokud upravuješ index.php, tak musí jít o homepage. Jediný problém může být s šablonou, která může využívat nějaké speciální funkce, nebo naopak nepoužívá archive.php a další obvyklé soubory.

  3. Dobrý den,
    mám dotaz jak ze šablony zruším ikonu a admin nad člankem a na konci komentář.Díky moc za info.

  4. Upravíš si to jednoduše v šabloně – půjde o konkrétní soubor podle toho, kde to nebudeš chtít zobrazovat (např. index.php na homepage, archive.php pro výpis rubriky, single.php pro výpis konkrétního příspěvku, atd.). Autor (v tvém případě “admin”) je v souborech obvykle vypisován pomocí funkce the_author(), kterou odstraníš (zakomentuješ) a podobně budeš řešit i další věci, které tam nechceš zobrazovat. Pokud si stejně nevíš rady jak dál, tak se klidně ozvi…

  5. Jasně omezení na vylistování dané kategorie (kategorií) funguje, jenže po vložení přestane fungovat stránkování. Ukazuje se sice Starší >> a Novější >> ale nestránkuje. Proč?

  6. S tim strankovanim je to vazne v riti. Zkousel jsem i
    query_posts(“cat=-30&posts_per_page=10&paged=”.$paged.””);
    ale nepomaha to :( Tak nevim v cem je zakopanej pes? Tusi to nekdo?

  7. Kabris: Omlouvám se za zpoždění s odpovědí, vysvětlení najdete v našem nejnovějším článku.

    CZrafan: Možná vám tam ještě chybí definování globální proměnné $paged nebo by se spíše už hodila funkce WP_Query(). Prohlédněte si náš nový článek a pokud nepomůže, tak se klidně ptejte (ale budeme potřebovat nějaké další podrobnosti o vašem řešení).

  8. Ahoj,
    tak se mi povedlo skrýt články v rubrice, ale nedaří se je skrýt v sidebaru. Mám tam hozený widget na Rubriky a Nejnovější příspěvky. Tam se pořád ten článek zobrazuje.
    V sidebar1.php jsem nastavil co se dalo, ale nic nefunguje.
    Pak je podle mě zbytečné skrývat článek jen na stránce, když se v postranním menu pořád zobrazuje :)

    Neví někdo jak se zabit i toho?
    Předem díky a ahoj.

  9. Kyoshi: Ano, toto řešení funguje na principu skrývání příspěvků v nějakém výpisu, a to tak, že se upraví parametry toho výpisu. V sidebaru pak už jde ale zase o jiný (další výpis), který s tím hlavním nesouvisí a musíš ho také upravit. A pokud je to řešené pomocí widgetů, tak musíš použít widgety, které umožňují nějaké pokročilé úpravy. Takže místo výchozího widgetu “Rubriky” můžeš použít např. plugin AVH Extended Categories Widgets a pro výpis nejnovějších příspěvků zase třeba výborný plugin Query Posts, který ve widgetu zcela nahrazuje funkci query_posts().

  10. Super, díky za rychlou odpověď :)
    Hned se na to mrknu. Už jsem nějaký “Category Excluder” začal hledat, dvakrát to rozhodilo celý web, jednou nefungoval vůbec :-D Já na to nakonec stejně přijdu, jako vždy :)

    Díky a ahoj

  11. Zdravím, prosím o radu, asi jsem natvrdlej ale nedaří se mi nastavit ID, vlastně né nedaří, vůůůůůbec netušim kde ho najdu

    (Jednotlivá ID naleznete v administraci a změňte si je samozřejmě podle svých potřeb.)

    Kod sem vložil, pochopil sem snad správně, že pak u daného článku určim ID, které článek nepustí na homepage, jen nevim kde to ID nahonit. děkuju za radu.

    Tom

  12. Pro výpis používám.

    have_posts()) : $recent->the_post();
    ?>
    <a href=““ rel=“bookmark“>

  13. Ahoj je tam možné dát jako by nějaký rozsah abych nemusel vypisovat všechny id uživatelů, který chci, aby jejich příspěvky na titulní stránce nebyly vidět.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *