Omiterea primelor 3 articole în wp query
Iată interogarea pe care am folosit-o.
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$wp_query = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&paged=' . $paged); ?>
Există vreo modalitate de a omite primele 3 articole doar pe prima pagină (?paged=1) și nu pe celelalte pagini (?paged=2....).
Pentru a sări peste postări, folosește parametrul offset în wp_query.
Pentru a afișa cele mai recente trei postări:
<?php
$latestpost = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=3');
//Aici adaugă bucla pentru afișarea postărilor, de exemplu:
while($latestpost->have_posts()) : $latestpost->the_post();
the_title();
the_content();
endwhile; wp_reset_query();
//După aceea, sări peste trei postări folosind offset
$latestpost = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=' . $paged);
the_title();
the_content();
endwhile; wp_reset_query();
?>
Gata.
Ei bine, am urmat această metodă și am făcut câteva modificări la ea...
// în functions.php
$mega = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=3');
//setează numărul de articole pe pagină la 3, astfel încât ID-urile primelor 3 articole vor fi afișate
$ids = array();
while ($mega->have_posts()) : $mega->the_post();
$ids[] = get_the_ID();
endwhile;
După aceea, pentru bucla principală pentru a sări peste primele trei articole, pe care am modificat-o puțin.
$args= array(
'post_type' => 'post',
'posts_per_page' => 6,
'paged' => $paged,
'order'=> 'asc',
'orderby'=> 'meta_value',
'meta_key'=>'date',
'post__not_in' => $ids
);
$wp_query = new WP_Query($args);
Și funcționează exact cum am dorit..
Folosind parametrul offset: https://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
$wp_query = new WP_Query('order=asc&orderby=meta_value&meta_key=date&posts_per_page=6&offset=3&paged=' . $paged); ?>
@MeghGandhi înțelegi că problema paginării nu are nicio legătură cu setarea parametrului offset. Interogarea ta deja strică paginarea.
Robert hue
de fapt WordPress generează propriul offset care face ca paginarea să funcționeze, iar când setăm manual parametrii, paginarea se strică.. http://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination
Megh Gandhi
Aș mai verifica o dată paginarea... poate fi dificil de implementat corect uneori. Te rog să încerci interogarea fără proprietățile posts_per_page și paged și vezi dacă paginează corect conform setărilor implicite din WordPress (Setări > Citire).
deflime
http://www.smashingmagazine.com/2009/06/10-useful-wordpress-loop-hacks/#2-use-more-than-one-loop-on-a-page-without-printing-duplicate-posts ei bine, am folosit această metodă și am adăugat codul în funcții și funcționează, ura!
Megh Gandhi
În loc să folosești atributul offset, te-ai gândit să creezi o variabilă cu valoarea 1 care să fie incrementată în buclă. Dacă bucla este mai mică decât 4, nu face nimic, altfel:
<?php
$p=1;
while ( have_posts() ) : the_post();
if($p > 3) {
?>
// EXECUTĂ ACȚIUNI
Aceasta nu rezolvă problema direct, dar poți seta o condiție astfel încât, dacă este prima pagină, să sari peste primele 3 postări?