Zobrazení nejnovějších příspěvků – i budoucích

Úvodní stránka Fórum podpory WordPressu Šablony, CSS (zobrazení webu) Zobrazení nejnovějších příspěvků – i budoucích

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á 5 let, 3 měsíce.

Aktuálně je na stránce zobrazeno 16 příspěvků - 1. až 16. (z celkem 16)
  • Autor
    Příspěvky
  • #20042

    m.macala
    Participant

    Dobrý den,
    můžete mi prosím poradit jak přesně bych měl upravit kod stranky index.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 ) &raquo;', '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 &raquo;', 'kubrick'));
    $next_link = get_next_posts_link(__('&laquo; 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&#8217;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(); ?>
    #20045

    admin
    Keymaster
    Web

    Jakou 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?

    #20046

    m.macala
    Participant

    Dobrý 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…

    #20049

    admin
    Keymaster
    Web

    Je 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…

    #20050

    admin
    Keymaster
    Web

    A 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).

    #20052

    m.macala
    Participant

    Úž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!
    RM

    #20060

    admin
    Keymaster
    Web

    Aha, 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 na array( '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' );
    #20084

    m.macala
    Participant

    Dobrý 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?
    RM

    #20102

    admin
    Keymaster
    Web

    Zají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?

    #20153

    m.macala
    Participant

    Dobrý 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á :)
    RM

    #20454

    m.macala
    Participant

    Dobrý 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 :)

    #21210

    m.macala
    Participant

    Dobrý 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řílohy

    Děkuji předem za rady! :)

    Attachments:
    1. slider.txt
    #22063

    m.macala
    Participant

    Dobrý 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! :)

    #22385

    admin
    Keymaster
    Web

    Pro 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).

    #23383

    m.macala
    Participant

    Dě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 :-/

    #23386

    admin
    Keymaster
    Web

    @m.macala: Těžko říci, musel bych to asi přímo vidět. Pokud můžete, tak pošlete přihlašovací údaje (administrátor WOrdPressu + FTP), zkusím se na to podívat…

Aktuálně je na stránce zobrazeno 16 příspěvků - 1. až 16. (z celkem 16)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.