Funkce get_posts

Funkce get_posts, je jedna z hojně využívaných funkcí, pro vytváření loopů (smyček) s výpisem článků. Můžete tak vypsat například poslední články, nebo články, dle zadaných argumentů.

Funkce get_posts se může na první pohled jevit jako podobná funkci get_pages, ale na rozdíl od ní, nepřistupuje přímo do databáze. Namísto toho, využívá WP_Query a každým zavoláním get_posts, tak vytvoříte novou instanci objektu. Díky tomu tak můžete na stránce vytvořit více loopů – výpisů článků, dle různých parametrů. Pokud tedy na hlavní straně šablony vidíte různé výpisy posledních článků, článků od autora, nebo kategorie, můžete toho dosáhnout právě použitím get_posts. WP_Query používá také query_posts, ale nedoporučuje se používat, pokud nechcete ovlivnit hlavní loop na stránce. Pokud chcete ovlivnit hlavní výpis, použijte pro to hook pre_get_posts.

Použití get_posts

$posts_array = get_posts( $args );

Několik příkladů použití

Výpis článků od jednoho autora:

$query = get_posts( 'author_name=rami' );

Výpis článků z jedné kategorie podle id, nebo slug:

$query = get_posts( 'cat=4' );
$query = get_posts( 'category_name=staff' );

Výpis článků podle štítků:

$query = get_posts( 'tag=bread,baking' );

Výpis článků podle taxonomie:

$args = array(
	'post_type' => 'post',
	'people' => 'bob'
);
$query = get_posts( $args );

Výpis článků pro custom post type „recepty“:

$query = get_posts( 'post_type=recepty' );

V praxi se většinou s takto jednoduchými dotazy nesetkáte, často se budou argumenty kombinovat a tak je běžnější podobný kód:

$args_search = array( 
    	'post_type' => array( 'telefony' ),
        'posts_per_page' => -1,
        'meta_key' => 'vybaveni',
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    );
 
$wp_query = get_posts( $args_search );

Vzhledem k tomu, že argumenty i použití je velmi podobné WP_Query, můžete stejné kódy použít i takto:

$query = new WP_Query( 'tag=bread,baking' );

Pomocí get_posts si tak můžete výpis článků upravit k obrazu svému, jen se musíte rozhodnout, zda není použití zbytečné. Pro custom post type a jejich taxonomie, má WordPress definovány soubory, sloužící pro jejich výpis.

Seznam argumentů

  • author
  • author_name
  • author__in
  • author__not_in
  • cat
  • category_name
  • category__and
  • category__in
  • category__not_in
  • tag
  • tag_id
  • tag__and
  • tag__in
  • tag__not_in
  • tag_slug__and
  • tag_slug__in
  • {tax}
  • tax_query
    • relation
      • taxonomy
      • field
      • terms
      • include_children
      • operator
  • s
  • p
  • name
  • page_id
  • pagename
  • post_parent
  • post_parent__in
  • post_parent__not_in
  • post__in
  • post__not_in
  • has_password
  • post_password
  • post_type
    • post
    • page
    • revision
    • attachment
    • any
    • „Custom Post Types“
  • post_status
    • publish
    • pending
    • draft
    • auto-draft
    • future
    • private
    • inherit
    • trash
    • any
  • nopaging
  • posts_per_page
  • posts_per_archive_page
  • offset
  • paged
  • page
  • ignore_sticky_posts
  • order
    • ASC
    • DESC
  • orderby
    • none
    • ID
    • author
    • title
    • name
    • date
    • modified
    • parent
    • rand
    • comment_count
    • menu_order
    • meta_value
    • meta_value_num
    • post__in
  • year
  • monthnum
  • w
  • day
  • hour
  • minute
  • second
  • m
  • date_query
    • year
    • month
    • week
    • day
    • hour
    • minute
    • second
    • after
      • year
      • month
      • day
    • before
      • year
      • month
      • day
    • inclusive
    • compare
    • column
    • relation
  • meta_key
  • meta_value
  • meta_value_num
  • meta_compare
  • meta_query
    • relation
    • key
    • value
    • compare
    • type
  • perm
  • cache_results
  • update_post_meta_cache
  • update_post_term_cache

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

Přidejte komentář

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