Úvodní stránka › Fórum podpory WordPressu › Šablony, CSS (zobrazení webu) › Zobrazení nejnovějších příspěvků – i budoucích
Štítky: Artisteer, Content Scheduler, Expirace příspěvků, Future, order, Plánované příspěvky, Pořadí, post_status, pre_get_posts, The Future Is Now
Zvolené téma obsahuje celkem 15 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel admin a poslední změna je stará 9 let, 10 měsíců.
-
AutorPříspěvky
-
21. srpna 2014 (23:04) #20042
Dobrý den,
můžete mi prosím poradit jak přesně bych měl upravit kod strankyindex.php
aby se na hlavní stránce s nejnovějšími příspěvky zobrazovali i ty budoucí? Jedná se o akce klubu, které teprve budou, ale měly by být viditelné – jako program.
Protože sem lama, přikládám aktuální kod stránky a prosím o rady!
Předem díky moc! :) R.<?php get_header(); ?> <div class="art-contentLayout"> <?php include (TEMPLATEPATH . '/sidebar1.php'); ?><div class="art-content"> <?php //based on Austin Matzko's code from wp-hackers email list function filter_where($where = '') { $where .= " AND post_date >= '".date("y")."-".date("m")."-".date("d")."'"; return $where; } add_filter('posts_where', 'filter_where'); $query_string="order=asc"; query_posts($query_string); ?> <?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> <div class="art-Post"> <div class="art-Post-cc"></div> <div class="art-Post-body"> <div class="art-Post-inner art-article"> <h2 class="art-PostHeader"> <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"> <?php the_title(); ?> </a> </h2> <?php $icons = array(); ?> <?php if (!is_page()): ?><?php ob_start(); ?><?php the_time('j. F Y'); ?> <?php $icons[] = ob_get_clean(); ?><?php endif; ?><?php if (0 != count($icons)): ?> <div class="art-PostHeaderIcons art-metadata-icons"> <?php echo implode(' | ', $icons); ?> </div> <?php endif; ?> <div class="art-PostContent"> <?php if (is_search()) the_excerpt(); else the_content(__('Vice ... ( + případná rezervace míst ) »', 'kubrick')); ?> <?php if (is_page() or is_single()) wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> </div> <div class="cleared"></div> </div> <div class="cleared"></div> </div> </div> <?php endwhile; ?> <?php $prev_link = get_previous_posts_link(__('Novější články »', 'kubrick')); $next_link = get_next_posts_link(__('« Starší články', 'kubrick')); ?> <?php if ($prev_link || $next_link): ?> <div class="art-Post"> <div class="art-Post-cc"></div> <div class="art-Post-body"> <div class="art-Post-inner art-article"> <div class="art-PostContent"> <div class="navigation"> <div class="alignleft"><?php echo $next_link; ?></div> <div class="alignright"><?php echo $prev_link; ?></div> </div> </div> <div class="cleared"></div> </div> <div class="cleared"></div> </div> </div> <?php endif; ?> <?php else : ?> <h2 class="center"><?php _e('Nanalezeno', 'kubrick'); ?></h2> <p class="center"><?php _e('Sorry, but you are looking for something that isn’t here.', 'kubrick'); ?></p> <?php if(function_exists('get_search_form')) get_search_form(); ?> <?php endif; ?> </div> </div> <div class="cleared"></div> <?php get_footer(); ?>
22. srpna 2014 (12:31) #20045Jakou používáte šablonu? Vypadá to na nějakou vlastní vytvořenou prostřednictvím programu Artisteer, ale jsou tam i zmínky “kubrick” a další. Nelíbí se mi tam zejména následující část kódu:
<?php //based on Austin Matzko's code from wp-hackers email list function filter_where($where = '') { $where .= " AND post_date >= '".date("y")."-".date("m")."-".date("d")."'"; return $where; } add_filter('posts_where', 'filter_where'); $query_string="order=asc"; query_posts($query_string); ?>
To byla přímo součást šablony nebo nějaká speciální úprava?
A co máte na mysli “budoucími” příspěvky? Podle čeho je máte definované? Máte nastavené jejich datum publikace do budoucna?
22. srpna 2014 (12:58) #20046Dobrý den,
přiznám se, že o šabloně vím jen to, že byla vytvořena v Artisteeru. A to zřejmě úpravou jiné šablony. Web jsem dostal k údržbě a úpravám až jako několikátý v pořadí, takže o nepořádku v kodu nebude pochyb. V tuto chvíli je apelováno na zachování vzhledu a funkcích šablony.
Přesně jak uvádíte mám budoucími příspěvky na mysli ty, co mají naplánováno datum publikace do budoucna.
U starší verze wordpress napč. na http://www.motorkarskysoupe.cz to funugje tak, že i když nastavíte datum oublikace do budoucna příspěvěk je na hlavní stránce viditelný okamžitě s tímto datem – plánovaná akce k lubu v budoucnu. Je možno jej standardně rozkliknout a číst obsah… Šablona je přitom kódově úplně stejná. Takže bude asi nějaký rozdíl ve funkčnosti tohoto ve WP 2.9.2 a 3.9.1…22. srpna 2014 (15:01) #20049Je velmi pravděpodobné, že po mnoha letech (a mnoha nových verzích WordPressu) nebude ten kód fungovat (zejména když je nekorektní). Nemá být ten odkaz na další web spíše
motorkarskydoupe.cz
?Zkuste odebrat celý kód, který jsem výše označil a místo toho vložte na konec souboru functions.php (v adresáři s použitou šablonou) následující příklad s využitím akce pre_get_posts:
function separatista_zobrazit_budouci_prispevky( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_status', array( 'future', 'publish' ) ); } } add_action( 'pre_get_posts', 'separatista_zobrazit_budouci_prispevky' );
Pozor, aby to bylo ještě správně vloženo v rámci PHP syntaxe. Nezkoušel jsem to, ale mohlo by to fungovat…
22. srpna 2014 (15:04) #20050A pro podobné účely mi přijde také vhodný např. plugin Future, který umí s plánovanými příspěvky vcelku dobře pracovat (ale nevím, jestli i přímo na úvodní stránce).
22. srpna 2014 (15:14) #20052Úžasné!!! Funguje! :)
Moc děkuji!
Mohu Vás poprosit ještě o doladění? Jedná se o http://www.klubradio.cz – abyste mohl nahlédnout.
Tento kod mi nic moc neříká.. Ještě tak zabarvit písmo v HTML, ale jinak… :)
Potřeboval bych aby se příspěvky zobrazovali v opačném pořadí. S nejpozdějším datem dole.
A také zda je možno nějak zajistit, že jakmile uběhne datum příspěvku, tak se přestane zobrazovat? na motorkarskydoupe.cz to kupodivu tak funguje :)
Děkuji za Vaši pomoc!
RM23. srpna 2014 (13:41) #20060Aha, tak to jsem nedomyslel :-) Takže novinky na úvodní stránce budou automaticky mizet, jakmile uplyne datum publikování? De facto chcete tedy zobrazovat pouze plánované příspěvky a pokud dojde k jejich publikování, tak už mají zmizet? Mělo by stačit změnit
array( 'future', 'publish' )
pouze naarray( 'future' )
. Ale moc se mi to celé logicky nelíbí, protože pohybujete zcela mimo logiku WordPressu a možná tam budou nějaké skryté (a nechtěné) důsledky. Raději bych použil nějaký plugin pro nastavení expirace příspěvků (řešili jsme to několikrát i přímo na fóru).Pokud jde o řazení, tak je defaultně nastaveno, aby se příspěvky řadily od nejnovějších (
DESC
), ale neměl by být problém to změnit (ASC
). Celý kód by pak mohl vypadat nějak takto (nezkoušel jsem naživo):function separatista_zobrazit_budouci_prispevky( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'post_status', array( 'future' ) ); $query->set( 'order', 'ASC' ); } } add_action( 'pre_get_posts', 'separatista_zobrazit_budouci_prispevky' );
26. srpna 2014 (14:05) #20084Dobrý den,
Děkuji! Kód pro ražení prispevku funguje a plugin Content sheduler skvěle řeší automatické stažení prispevku :) Objevil sem ale jeden problém. Když se podivate na klubradio.cz uvidíte příspěvky. Poku se ale jako nepřihlášený uživatel pokusíte příspěvek rozkliknout – error stránka nenalezena :( Pro vás jistě nebude těžké odhadnout kde je třeba úprava. Prosím tedy o další pomoc. Příspěvky jsou zveřejňovány standardně ne jako soukromé. Muže to byt tím, ze mají budoucí datum?
RM28. srpna 2014 (16:20) #20102Zajímavé, zkoušel jste deaktivovat zmiňovaný plugin Content Scheduler (a vlastně i všechny ostatní pluginy)? Nemůže být tento plugin v konfliktu s výše doplňovaným zdrojovým kódem? Nebo že by neměli návštěvníci přístup k plánovaným příspěvkům? Jako administrátor si můžete příspěvek na webu bez problémů přečíst?
1. září 2014 (12:19) #20153Dobrý den,
chvilku mi trvalo to vyzkoušet, ale žádný plugin na to zřejmě nemá vliv.
Jako administrátor článek bez potíží otevřu, takže to bude asi o tom zakázeném přístupu k budoucím příspěvkům pro návštevníky. Což by samozřejmě mělo logiku v rámci smyslu WP… Přesto myslím, že náprava není nemožná :)
RM20. září 2014 (19:49) #20454Dobrý den,
Nenapadlo vás nějaké řešení problému s ne zobrazováním článku návštěvníkům viz me příspěvky výše? Děkuji :)
6. prosince 2014 (1:31) #21210Dobrý den,
jak zobrazit budoucí příspěvky už víme a iplementovali jsem do nové šablony.
Ale tato šablon a obsahuje i slider, který zobrazuje úvodní obrázek a část textu z něj nahoře na úvodní stránce.
Rádi bychom slider v šabloně zachovali, ale problém je, že on nevidí budoucí příspěvky a nedaří se mi vysvětlit mu to :/
Zde je pro dokreslení demo šablony se sliderem:
http://www.deluxetemplates.net/2012/09/eventblog-wordpress-theme.html/demo/
Mohl byst emi poradit, jak upravit jeho kod aby dokázal pracovat s budoucími příspěvky?
Kod slideru také přikládám – do přílohyDěkuji předem za rady! :)
Attachments:
14. února 2015 (19:04) #22063Dobrý den,
ano, je to tím, že napřihlášený uživatel nemá přístup k budoicím příspěvkům.
U příspěvků publikovyných standardně ihned jejich rozkilknutí funugje.
U budoucích se objeví chybová stránka 404… :(
To je škoda, když už se nám ty budoucí na webu zobrazují.Nevíte, kde uvnitř wordpressu by se dal přístup nepřihlášeným k budoicím příspěvkům povolit?
Díky! :)
10. března 2015 (14:34) #22385Pro slider by se měl patrně opět změnit dotaz na příspěvky, tedy následující kód:
$featured_posts = get_posts("numberposts=5&&category=$featured_posts_category");
tak aby se zobrazily i budoucí příspěvky:
$args = array( 'numberposts' => 5, 'category' => $featured_posts_category, 'post_status' => array( 'publish', 'future' ) ); $featured_posts = get_posts( $args );
A problém, proč se nezobrazují příspěvky po jejich rozkliknutí na stránce s konkrétním příspěvkem je velmi podobný (opět tam je omezení na pouze publikované příspěvky) a měla by se proto doplnit ještě jedna funkce (netestováno):
function separatista_zobrazit_budouci_prispevky_jednotlive( $query ) { if ( $query->is_single() && $query->is_main_query() ) { $query->set( 'post_status', array( 'publish', 'future' ) ); } } add_action( 'pre_get_posts', 'separatista_zobrazit_budouci_prispevky_jednotlive' );
Na Webtrhu byl nedávno doporučován plugin The Future Is Now, který funguje trochu jinak, takže se při publikování plánovaného příspěvku natvrdo změní jeho status na
publish
(a datum zůstane do budoucna). Ale těžko říci, zda to nebude mít třeba nějaké související následky… Další možnosti filtrů se řešily např. zde (anglicky).27. května 2015 (15:42) #23383Děkuji , že téma nezapadlo :)
A děkuj i za návrh řešení. Bohužel musím sdělit, že něco je špatně (tím nechci říct, že ve Vašem návrhu řešení :))….
Po vložení kodu nedochází k žádné změně a nepřihlášený uživatel stále nerozklikne příspěvek – dostane se na chybovou stránku… :(Zmiňovaný plugin jsme zkoušeli, ale nějak nefungoval jak měl :-/
28. května 2015 (8:54) #23386 -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.