פייגינג וורדפרס בשימוש בשאילתא
כאשר צריך לעשות שאילתא מורכבת יותר מאשר wp_query, משתמשים ב שאילתא מהסוג הזה
$wpdb->get_results($querystr,OBJECT)
ובשונה מ wp_query צריך להשקיע קצת יותר כדי לבנות עימוד למטה מה שנקרא פייגינג או באנגלית pagination
אני מראה פה דוגמא לבניית פייגר עם הפונקציה paginate_links שבנויה בוורדפרס:
global $wpdb;
$per_page = 10; // מספר העמודים לדף
// יש לשלוח cpage
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
if ($page > 1) {
$offset = $page * $per_page - $per_page;
} else {
$offset = $page;
}
// השאילתא שלכם
$sql_query = "select * from $wpdb->posts where post_type in ('simple','blue')"
. "order by id desc limit $per_page offset $offset";
$results = $wpdb->get_results($sql_query, OBJECT);
//כאן אתם רושמים את הקוד שלכם שרץ לרוב בלולאה כלשהי
//השאילתא שלכם בלי הגבלה כדי לבדוק את מספר עמודות שקיימות
$total = $wpdb->get_var("SELECT count(id) from $wpdb->posts where post_type in('simple','blue')");
echo paginate_links(array(
'base' => add_query_arg('cpage', '%#%'),
'format' => '',
'prev_text' => __('«'),
'next_text' => __('»'),
'total' => ceil($total / $per_page),
'current' => $page
));
יש להשים לב שיש לשלוח ב get את cpage
וכמובן לשנות את השאילתות….
בהצלחה.