Úvodní stránka › Fórum podpory WordPressu › Pluginy (funkčnost webu) › ACF – příspěvky s datem starším než dnešní datum
Štítky: Advanced Custom Fields, datum, WP_Query
Zvolené téma obsahuje celkem 7 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel admin a poslední změna je stará 8 let, 1 měsíc.
-
AutorPříspěvky
-
25. února 2016 (13:31) #26720
Dobrý den,
snažím se na homepage vypsat akce a potřebuji zajistit to, aby se vypisovaly pouze budoucí akce, takže né akce s datem starším, než je dnešní datum.Datum konání zadávám do pole vytvořené pomocí Advanced Custom Field s názvem “datum”.
Na homepage mám tento kód:
<div class="row"> <?php $the_query = new WP_Query( array( 'post_type' => 'akce', 'order' => 'ASC', 'orderby' => 'meta_value', 'meta_key' => 'datum', 'posts_per_page' => 1, ) ); while ( $the_query->have_posts()) : $the_query->the_post(); # get the datum for this post $temp_date = get_field('datum', get_the_ID() ); if ($temp_date > date("ymd")) { ?> <div class="akce"> <!-- Obsah jedné akce --> </div> <?php } endwhile; wp_reset_query(); ?> </div>
Je tam
WP_Query()
, filtrující pouze custom post “Akce” a řadící akce podle “datum”. Pořád mi tam ale nějak nefunguje ta podmínka pro starší akce, než dnešní datum. Vždy se vypíše starší akce, bez ohledu na tu podmínku.Zkoušel jsem všechno možné, ale už mě nenapadá, jak to řešit.
Budu rád za každou pomoc, jelikož to celkem spěchá a jsem už v koncích :)
Děkuji předem
25. února 2016 (14:00) #26722Nepomohlo by toto starší téma, kde jsme řešili právě formát data?
A podmínka by pak mohla být přímo v rámci WP_Query() za použití parametrů
meta_key
,meta_value
ameta_compare
.25. února 2016 (14:35) #26725To jsem také zkoušel. Pokud vás chápu, tak takto:
<div class="row"> <?php $the_query = new WP_Query( array( 'post_type' => 'akce', 'order' => 'ASC', 'orderby' => 'meta_value', 'meta_key' => 'datum', 'posts_per_page' => 1, 'meta_query' => array( array( 'meta_value' => date('ymd', strtotime("today") ), 'meta_key' => 'datum', 'meta_compare' => '>=', ), ), ) ); while ( $the_query->have_posts()) : $the_query->the_post(); ?> <div class="akce-hp"> <!-- Obsah jedné akce --> </div> <?php endwhile; wp_reset_query(); ?> </div>
Ale i tak to z nějakého důvodu stále nefunguje jak má :(
25. února 2016 (14:48) #26726Máte tam dvakrát:
'meta_key' => 'datum'
, ale to by asi nemělo vadit.V jaké podobě (formát) je ukládán datum v poli
datum
? Když používátedate('ymd')
, tak by měl mít stejnou podobu?25. února 2016 (14:52) #26727Ve formátu yymmdd, což by mělo být asi to stejné jako date(‘ymd’) v php. Pokud jsem to podle specifikace správně pochopil.
Z ACF mám ve function.php toto…
if(function_exists("register_field_group")) { register_field_group(array ( 'id' => 'acf_akce', 'title' => 'Akce', 'fields' => array ( array ( 'key' => 'field_569cf1f7397f5', 'label' => 'Datum', 'name' => 'datum', 'type' => 'date_picker', 'required' => 1, 'date_format' => 'yymmdd', 'display_format' => 'dd/mm/yy', 'first_day' => 1, ), ), 'location' => array ( array ( array ( 'param' => 'post_type', 'operator' => '==', 'value' => 'akce', 'order_no' => 0, 'group_no' => 0, ), ), ), 'options' => array ( 'position' => 'side', 'layout' => 'default', 'hide_on_screen' => array ( ), ), 'menu_order' => 0, )); }
25. února 2016 (14:56) #26729A co se ve výsledku zobrazuje? Je výpis nějak ovlivněn nebo seřazen?
Podívejte se prosím ještě do databáze do tabulky
wp_postmeta
, zda název poledatum
nedědí třeba nějaký prefix a jak se datum opravdu ukládá.25. února 2016 (15:17) #26731Aháá, tak tady to je. V databází je meta_value 20160319. Takže pomohlo nastavit date(‘Ymd’).
Takže ACF s tím formátem pracuje trošku jinak, než jsem předpokládal dle zápisu yymmdd.
Teď by to snad mělo fungovat bez problému. Mockrát děkuji za pomoc.
<div class="row"> <?php $the_query = new WP_Query( array( 'post_type' => 'akce', 'order' => 'ASC', 'orderby' => 'meta_value', 'meta_key' => 'datum', 'posts_per_page' => 1, 'meta_value' => date('Ymd'), 'meta_key' => 'datum', 'meta_compare' => '>=', ) ); while ( $the_query->have_posts()) : $the_query->the_post(); ?> <div class="akce-hp"> <!-- Obsah jedné akce --> </div> <?php endwhile; wp_reset_query(); ?> </div>
25. února 2016 (21:29) #26735 -
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.