Hallo Wordpress-Freunde,
ich habe eine überlange Liste, die ich in mehrere Seiten splitten möchte. Dazu benutze ich folgenden Code:
Code
$items_per_page = 30;
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1;
$offset = ( $page * $items_per_page ) - $items_per_page;
// $results = get_transient('test'.$page);
// if ($results === false) {
$query = "SELECT ID, post_title, post_name FROM wp_posts WHERE wp_posts.post_type = 'person' AND wp_posts.post_status = 'publish'";
$total_query = "SELECT COUNT(1) FROM (${query}) AS combined_table";
$total = $wpdb->get_var( $total_query );
$results = $wpdb->get_results( $query.' ORDER BY ID DESC LIMIT '. $offset.', '. $items_per_page, OBJECT );
//set_transient('test'.$page, $results, 3600 * 24);
//}
global $post;
foreach( $results as $post )
{
the_title( );
}
echo paginate_links( array(
'base' => add_query_arg( 'cpage', '%#%' ),
'format' => '',
'prev_text' => __('«'),
'next_text' => __('»'),
'total' => ceil($total / $items_per_page),
'current' => $page
));
Alles anzeigen
Dieser Code funktioniert auch einwandfrei, die Seitenpaginierung am Ende der Seiten wird korrekt angezeigt.
Wenn ich jedoch die Auskommentierung für den Transient-Cache entferne, um den SQL-Code zu cachen, verschwindet die Seitenpaginierung. Die Transienten werden aber korrekt erstellt, d.h. die Variable $page wird auch wie gewünscht übergeben. Also die Namen lauten dann je nach Seite test1, test2, test3 usw. Das habe ich mit dem Plugin "Transienten-Manager" überprüft.
Woran kann es dann liegen, dass die Seitenpaginierung nicht angezeigt wird?
Vielen Dank für eure Hilfe im voraus :-)
Andreas