Saya menemukan masalah ini pada Dukungan Wordpress dan sayangnya topiknya sekarang ditutup. Saya memiliki masalah yang sama ... (baca di bawah)
Kami telah membuat situs di mana anggota dapat merekomendasikan hal-hal seperti buku favorit, film, lagu, dll. Untuk masalah ini saya akan menggunakan halaman Film sebagai contoh.
Halaman "Movies" pada akhirnya adalah templat halaman kustom yang meminta wordpress untuk menampilkan daftar acak dari SEMUA posting yang telah diberi kategori "film" (kategori 31). Ini menampilkan judul film-film ini secara acak menggunakan kode di bawah ini.
<?php
$rand = new WP_Query("cat=31&showposts=-1&orderby=rand");
while($rand->have_posts()) : $rand->the_post();
?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?>
<?php endwhile; ?>
Masalahnya adalah daftarnya semakin panjang dan saya ingin membaginya menjadi dua atau lebih halaman masing-masing sekitar 10 film. Untuk mencapai ini, saya telah menggunakan kode di bawah ini.
<?php
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("cat=31&orderby=rand&showposts=10&paged=$page");
while ( have_posts() ) : the_post()
?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?>
<?php endwhile; ?>
Tetapi ada masalah karena meskipun membagi data menjadi 10 halaman masing-masing (paginates), ia gagal untuk memasukkan 10 posting baru di halaman 2 dan seterusnya. Dengan kata lain, karena daftar hal-hal dalam urutan acak, hanya keluar dan mendapat 10 posting acak (atau dalam hal ini judul film). Akibatnya, kami memiliki beberapa posting judul film yang diulang alih-alih satu set baru 10 judul film acak di halaman 2, dll.
Pertanyaan saya adalah - apa yang bisa saya tambahkan ke kode ini untuk membuat wordpress menjadi "ingat" yang mana 10 tulisan acak itu dimasukkan pada halaman 1, dan kemudian dapatkan 10 set posting baru untuk diletakkan di halaman 2, 3, dll hingga semua posting ditampilkan. Saya ingin hanya ada satu kejadian posting per halaman ketika diurutkan secara acak dalam set 10.
sumber
Sejak WordPress versi terakhir, Anda sekarang dapat menambahkan seed ke nilai
orderby
parameterWP_Query
:$seed
adalah angka acak. Anda harus menyimpannya sebagai variabel sesi PHP. Jangan lupa untuk mengaktifkan sesi PHP di WordPress dengan memanggilsession_start()
Andafunctions.php
:Dengan sintaks ini Anda tidak perlu menggunakan
posts_orderby
filter. Selain itu, Anda tidak perlu memastikan bahwa filter hanya diterapkan ke WP_Query yang ditargetkan.Untuk informasi lebih lanjut silakan baca tiket ini di WordPress Core.
sumber