WP_Query - własne zapytania w WordPress

WP_Query to serce WordPress - odpowiada za pobieranie postów z bazy. Jako developer musisz znać tę klasę. Pokażę praktyczne zastosowania.

Krótka odpowiedź

WP_Query pobiera posty z bazy według kryteriów. new WP_Query(['post_type'=>'post', 'posts_per_page'=>5]). Parametry: post_type, category, tag, meta_query, tax_query, orderby, date_query. Pamiętaj o wp_reset_postdata() po pętli.

Podstawy WP_Query

Struktura:
```php
$args = array(
'post_type' => 'post',
'posts_per_page' => 5
);
$query = new WP_Query($args);

if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
the_title();
the_excerpt();
endwhile;
wp_reset_postdata();
endif;
```

wp_reset_postdata():
- ZAWSZE po custom query
- Przywraca globalny $post
- Bez tego - dziwne błędy

Popularne parametry

Filtrowanie:
```php
$args = array(
'post_type' => 'product',
'category_name' => 'elektronika',
'tag' => 'wyprzedaz',
'posts_per_page' => 10,
'offset' => 5, // pomiń 5 pierwszych
);
```

Sortowanie:
```php
'orderby' => 'date', // title, rand, menu_order, meta_value
'order' => 'DESC', // ASC
```

Meta query (ACF, custom fields):
```php
'meta_query' => array(
array(
'key' => 'cena',
'value' => 100,
'compare' => '>=',
'type' => 'NUMERIC'
)
)
```

Zaawansowane zapytania

Tax query (taksonomie):
```php
'tax_query' => array(
array(
'taxonomy' => 'kolor',
'field' => 'slug',
'terms' => array('czerwony', 'niebieski')
)
)
```

Date query:
```php
'date_query' => array(
array(
'after' => '2024-01-01',
'before' => '2024-12-31',
'inclusive' => true
)
)
```

Optymalizacja:
- 'no_found_rows' => true (bez paginacji)
- 'update_post_meta_cache' => false
- 'update_post_term_cache' => false

Wspomniane narzędzia

Query Monitor Debug Bar

Najczęściej zadawane pytania

WP_Query vs query_posts vs get_posts?
WP_Query: tworzysz nowy obiekt, najlepsze dla custom loops. get_posts: zwraca array, prostsze użycie. query_posts: NIE UŻYWAJ - modyfikuje main query, problemy. Zawsze WP_Query lub get_posts.
#wordpress#wp-query#programowanie#php#baza-danych

Potrzebujesz pomocy specjalisty?

Skorzystaj z naszych usług w największych miastach Polski