Wie fügt man PHP-Paginierung zu WordPress hinzu?

Ich versuche, eine benutzerdefinierte PHPPaginierung mit WordPress arbeiten, die Seite in WordPress ist eine sehr benutzerdefinierte, nicht ein Post oder eine Seite, es ist eine Auswahl aus DB, Blumen zeigt, das Styling ist jetzt in Ordnung, aber es zeigt alles die Blumen in einer Stadt und ich möchte 10 Blumen pro Seite begrenzen:

$per_page = 10; $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; $startAt = $per_page * ($page - 1); $user_query_subs = new WP_User_Query( array('meta_key' => 'location', 'number' => $per_page, 'offset' => $startAt, 'meta_value' => $flow_location, 'meta_compare' => '=', 'role' => 'admin', 'orderby' => 'rand', 'order' => 'DESC'), array('fields' => 'all_with_meta') ); $all_user_query_subs = new WP_User_Query( array('meta_key' => 'location', 'meta_value' => $flow_location, 'meta_compare' => '=', 'role' => 'admin', 'orderby' => 'rand', 'order' => 'DESC'), array('fields' => 'all_with_meta') ); $all_flowers = $all_user_query_subs->get_total(); $flowers = $user_query_subs->get_results(); 

und nachdem der Inhalt geladen ist: Ich füge die Links auf der Unterseite wie folgt hinzu:

 <?php $totalPages = $all_flowers / $per_page; $links = ""; $current_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; for ($i = 1; $i <= $totalPages; $i++) { $links .= ($i != $page ) ? "Page $i " : "$page "; } echo $links; ?> 

Die Select-Abfrage funktioniert einwandfrei, sie lädt nur 10 pro Seite, aber mein Problem ist mit den links unten:

Gerade jetzt, wenn ich die Seite 2 drücke, um auf die nächsten 10 Blumen aus der Stadt zuzugreifen, bekomme ich Page Not Found von WordPress aber mit dem korrekten $current_url/page/$i

Irgendwelche Ideen bitte? Danke im Voraus!

Solutions Collecting From Web of "Wie fügt man PHP-Paginierung zu WordPress hinzu?"

Sie können paginate_links () von der wordpress core API verwenden, um die benutzerdefinierte Abfrage leichter paginieren zu können. Und Sie brauchen keine weitere Abfrage, um alle Benutzer zu zählen.

 < ?php $users_per_page = 10; // total no of author to display $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; if( (int)$paged === 1 ){ $offset = 0; } else { $offset = ($paged-1) * $users_per_page; } $args = array( 'meta_key' => 'location', 'number' => $users_per_page, 'offset' => $offset, 'meta_value' => $flow_location, 'meta_compare' => '=', 'role' => 'admin', 'orderby' => 'ID', 'order' => 'DESC' ); $fields = array('fields' => 'all_with_meta'); $user_query_subs = new WP_User_Query( $args, $fields ); $users = $user_query_subs->get_results(); if ( !empty( $users ) ) { foreach ( $users as $user ) { // code goes here } } else { echo 'No flowers found.'; } ?> 

Und dann die Seitennummerierung, erinnere dich daran, wie deine Struktur ist.
Wenn Sie Permalinks verwenden, können Sie diesen Code unten verwenden:

 < ?php $query_string = $_SERVER['QUERY_STRING']; // current query parameters $total_users = $user_query_subs->total_users; // total number of users $total_pages = ceil( $total_user/$users_per_page ); // total number of pages // if on the front end, your base is the current page $base = get_permalink( get_the_ID() ) . '?' . remove_query_arg('paged', $query_string) . '%_%'; $paginate_args = array( 'base' => $base, 'format' => '?paged=%#%', // define the query parameter that will be used, in this case "paged" 'current' => $paged, 'total' => $total_pages, 'prev_text' => 'Previous', 'next_text' => 'Next' , 'end_size' => 1, 'mid_size' => 5 ); echo paginate_links($paginate_args); ?>