Saya pikir saya hampir sampai di sana dengan ini, tetapi saya tidak bisa mendapatkan tautan pagination untuk ditampilkan untuk direktori penulis yang saya buat.
Kode saya di bawah ini, tetapi saya tidak tahu bagaimana cara mendapatkan tautan untuk bernavigasi di antara halaman penulis agar berfungsi. Ada yang bisa bantu saya? Saya merasa ini mungkin berguna, tetapi saya tidak tahu bagaimana cara mengimplementasikannya:
Terima kasih
Osu
<?php
/* ****************************************************************** */
/* !LIST AUTHORS */
/* ****************************************************************** */
// THANKS TO:
// http://www.mattvarone.com/wordpress/list-users-with-wp_user_query/
// pagination
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // Needed for pagination
$paged -= 1;
$limit = 2;
$offset = $paged * $limit;
// prepare arguments
$args = array(
// search only for Authors role
'role' => 'Subscriber',
// order results by display_name
'orderby' => 'display_name',
// return all fields
'fields' => 'all_with_meta',
'number' => $limit,
'offset' => $offset
);
// Create the WP_User_Query object
$wp_user_query = new WP_User_Query($args);
// Get the results
$authors = $wp_user_query->get_results();
// Check for results
if (!empty($authors))
{
echo '<div class="author-entry">';
// loop trough each author
foreach ($authors as $author)
{
$author_info = get_userdata($author->ID); ?>
<span style="float:left;padding:0 5px 0 0;"><?php echo get_avatar( $author->ID, 50 ); /* http://codex.wordpress.org/Function_Reference/get_avatar */ ?></span>
<span class="fn"><strong>First name</strong> : <?php echo $author_info->first_name; ?></span><br />
<span class="ln"><strong>Last name</strong> : <?php echo $author_info->last_name; ?></span><br />
<span class="em"><strong>Email address</strong> : <a href="mailto:<?php echo $author_info->user_email; ?>"><?php echo $author_info->user_email; ?></a></span><br />
<span class="we"><strong>Website</strong> : <a href="<?php echo $author_info->user_url; ?>"><?php echo $author_info->user_url; ?></a></span><br />
<span class="de"><strong>Bio</strong> :<br /><?php echo $author_info->description ; ?></span>
<div class="clear"> </div>
<?php
}
echo '</div>';
} else {
echo 'No authors found';
}
?>
<?php /* WHAT DO I PUT HERE TO CREATE THE PAGINATION LINKS? */ ?>
Jawaban:
Ini seharusnya membuat Anda benar-benar dekat. Saya belum mengujinya, tetapi hampir identik dengan pengaturan yang telah saya gunakan beberapa kali.
sumber
Anda benar-benar tidak boleh menggunakan jawaban oleh Pippin. Permintaannya sangat tidak efisien.
$user_count_query
dalam contoh ini dapat mengembalikan hingga 999.999 pengguna dari database Anda ke skrip Anda, dengan semua bidang pengguna. Ini pasti akan menekan memori dan / atau batas waktu untuk PHP jika / ketika situs Anda tumbuh cukup besar.Tapi itu mungkin satu-satunya solusi di tahun 2012.
Ini cara yang lebih baik untuk melakukannya. Dalam contoh ini saya hanya punya halaman berikutnya dan sebelumnya, tetapi jika Anda memang perlu pagination bernomor, variabel ada untuk membangunnya. WordPress tidak memiliki fungsi pagination yang kompatibel dengan WP_User_Query (setahu saya).
Contoh menunjukkan halaman 2:
Pembaruan 6/8/2018: Cara menambahkan nomor halaman daripada Berikutnya / Sebelumnya
Jika Anda ingin memiliki nomor halaman alih-alih tautan halaman berikutnya / sebelumnya, berikut adalah cara Anda mengaturnya. Perhatikan bahwa Anda perlu mengganti angka dengan tautan halaman, mereka tidak akan dapat diklik dalam contoh ini (berdasarkan https://stackoverflow.com/a/11274294/470480 , dimodifikasi untuk menunjukkan jumlah angka tengah yang konsisten dan tidak menambah "..." kecuali halaman sebenarnya dilewati).
Anda juga dapat melihat file inti saya yang berisi fungsi yang dapat digunakan kembali untuk tujuan ini.
Output (dari halaman 1 hingga 10):
sumber
$start_user_num = (($current_page-1) * $users_per_page) + 1;
dan$end_user_num = $start_user_num + count($users->get_results());
.Call to a member function get_results() on a non-object
jadi saya diubah$end_user_number
ke$start_user_num + ($users_per_page-1);
dan memecahkan masalah. Terima kasih lagi!$end_user_number
solusi saya. Kembali ke papan gambar, ha!Penghargaan penuh harus diberikan kepada @ radley-sustaire atas jawabannya, tetapi saya melihat ada kesalahan kecil sehingga saya membagikan versi jawaban saya di sini.
Dengan versi saya, saya juga memfilter hasil berdasarkan lokasi, kata kunci dll sehingga beberapa halaman memiliki hasil lebih sedikit daripada var '$ users_per_page'. Jadi misalnya jika pengguna saya per halaman diatur untuk menampilkan 10, tetapi hasil filter hanya mengembalikan 3 pengguna, saya mendapat 'Menampilkan 10 dari 3 pengguna' di bagian atas halaman. Jelas ini tidak masuk akal jadi saya menambahkan pernyataan "jika" sederhana untuk memeriksa apakah hasilnya lebih tinggi dari variabel '$ users_per_page'.
Radley, jika Anda mengedit jawaban Anda dengan pembaruan, saya akan dengan senang hati memilihnya sebagai jawaban yang benar karena saya pikir itu lebih baik daripada solusi Pippin.
Jadi ini adalah kode final untuk siapa saja yang menginginkannya.
sumber