Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › content-status
Štítky: Formáty příspěvků, get_post_format(), loop, query_posts(), tax_query, WP_Query
Zvolené téma neobsahuje zatím 1žádnou odpověď. Do diskuze (2 účastníci) se naposledy zapojil uživatel admin a poslední změna je stará 10 let, 10 měsíců.
-
AutorPříspěvky
-
31. prosince 2012 (10:26) #2652
mám šablonu podobné twentyeleven a mám tam ty post contenty… potřeboval bych aby se v jedné části stránek zobrazovaly jen články označené status…
poradíte mi někdo? zkoušel jsem query ale nějak se mi to nepovedlo
1. ledna 2013 (11:30) #14058Výrazem “post contenty” máte na mysli formáty příspěvků?
Co se na “query” nepovedlo? Máte nějakou konkrétní ukázku kódu?
Dotazování na příspěvky konkrétního formátu bez problémů funguje. Formáty příspěvků jsou vlastně položkami speciální interní taxonomie s názvem
post_format
, takže musíte v tomto případě použít parametr tax_query pro funkci WP_Query(). Další podrobnosti a složitější příklady naleznete zde (anglicky).Existují také různé widgety, např. Ambrosite Post Formats Widget pro zobrazování formátů příspěvků v podobě odkazů na jejich celkový výpis (archiv).
1. ledna 2013 (17:14) #14059ok takže jsem logicky použil
<?php $format = get_post_format('status'); ?>
na vypsání všech článku jenž mají tento parametr…ovšem otázkou je proč se mi to nezobrazilo :(
1. ledna 2013 (18:46) #14060Funkce get_post_format() má zcela jiné použití. Pokud ji umístíte v cyklu (loop), tak vrátí aktuální formát konkrétního příspěvku. Jejím parametrem nemůže být formát (např. status), ale pouze ID příspěvku, u kterého chcete získat konkrétní formát. Takže uvedený kód nevrátí vůbec nic (a ještě je také potřeba nechat vypsat hodnotu proměnné
$format
a ne do ní jen uožit hodnotu). Zkuste se prosím podívat na příklady a odkazy, které jsem uvedl výše…1. ledna 2013 (20:05) #14061Aha jsem ztracen… když jsem nahodil query tak mi to ovlivnilo hlavní content článků a já chtěl aby to je vypsalo všechny status formats v určité části webu :(
2. ledna 2013 (11:01) #14062Z takového popisu se těžko něco usuzuje… Obecně nesmíte modifikovat hlavní cyklus (loop), ale vytvořit další (sekundární) nezávislý cyklus. Pokud se chystáte zobrazovat příspěvky s určitým formátem na nějaké stránce, tak tu máme mnoho souvisejících vláken. Každopádně budou potřeba další podrobnosti…
14. ledna 2013 (19:52) #14063dobře uvedu přesný příklad…
na stránce mypixel potřebuji aby vedle toho slideshow se zobrazovali příspěvky jenom status…
a dole pod slideshow všechny příspěvky včetně statusu. Však použiji li query tak mi sice zobrazí jen statusy vedle slideshow ale zároveň mi to zobrazí jenom statusy pod slideshow… což nechci ;)
14. ledna 2013 (20:11) #1406414. ledna 2013 (23:08) #14065Samozřejmě
get_header(); ?>
<div class="underheader">
<div class="slider">
<?php echo minecraft_slider_template(); ?>
</div>
<div id="status">
<?php
$args = array(
'tax_query' => array(
array(
'post_type' => 'status',
'posts_per_page' => 5
)
)
);
query_posts( $args );
?>
<?php $query = new WP_Query(); ?>
<?php if($query->have_posts()) : ?><?php while($query->have_posts()) : $query->the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; ?>
</div>
</div>
<div class=”clear”></div>
<div id=”primary”>
<div id=”control”>
<?php get_search_form(); ?>
</div>
<div id=”content” role=”main”>
<?php if ( have_posts() ) : ?>
<?php minecraft_content_nav( ‘nav-above’ ); ?>
<?php /* Start the Loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php
/* Include the Post-Format-specific template for the content.
* If you want to overload this in a child theme then include a file
* called content-___.php (where ___ is the Post Format name) and that will be used instead.
*/
get_template_part( ‘content’, get_post_format() );
?>
<?php endwhile; ?>
<?php minecraft_content_nav( ‘nav-below’ ); ?>
<?php else : ?>
<article id=”post-0″ class=”post no-results not-found”>
<header class=”entry-header”>
<h1 class=”entry-title”><?php _e( ‘Nothing Found’, ‘minecraft’ ); ?></h1>
</header><!– .entry-header –>
<div class=”entry-content”>
<p><?php _e( ‘It seems we can’t find what you’re looking for. Perhaps searching can help.’, ‘minecraft’ ); ?></p>
<?php get_search_form(); ?>
</div><!– .entry-content –>
</article><!– #post-0 –>
<?php endif; ?>
</div><!– #content –>
</div><!– #primary –>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
14. ledna 2013 (23:18) #14066pro lepší čtení
15. ledna 2013 (19:59) #14067Nejdříve tedy chcete pouze statusy (formát příspěvků) a až poté výpis všech příspěvků? Jednodušší by to asi bylo obráceně, ale je to asi jedno…
Je tam hned několik důležitých chyb:
1)
'post_type' => 'status'
Nesmysl. Pokud jde o formáty příspěvků, tak je status položkou taxonomie
post_format
, tedy správně takto (vysvětloval jsem to o pár odpovědí výše):'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-status' ),
'operator' => 'IN'
)
)2) Používáte správně nejdříve funkci query_posts() pro modifikaci základního cyklu (loop), ale hned poté zbytečně WP_Query(). Musíte nechat nejdříve proběhnout cyklus a zobrazit příspěvky a až poté je třeba spustit funkci WP_Query() a udělat nový cyklus, tentokrát na všechny příspěvky. Prohlédněte si příklad, pouze v prvním případě tam máte funkci query_posts().
A možná to lze udělat ještě jednodušeji, tedy nejdříve provést speciální WP_Query() na statusy a následně jen nechat zobrazit obsah primárního cyklu na homepage, takže nepotřebujete ani funkci query_posts().
Podle příkladu se patrně pokoušíte o vnořený cyklus, což se ale podle mě v tomto případě nehodí…
Zkuste to dát dohromady, pokud se nezadaří, tak to zkusíme nějak dokončit…
-
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.