define('DISALLOW_FILE_MODS', true); » نمایش رندم پست ها به همراه صفحه بندی (pagination) در وردپرس

طراحی قالب وردپرس با آرتاباز

بیش از 0 پروژه طراحی وب سایت و 0٪ رضایت مشتریان فقط کافیست نمونه کارها را مشاهده کنید.

نمایش رندم پست ها به همراه صفحه بندی (pagination) در وردپرس

اگر خواسته باشین تا پست های سایتتون رو در صفحات ایندکس، آرشیو، جستجو و … به صورت رندم لیست کنید، اصلا کاری نداره شما می تونید در کوئری از

'orderby' => 'rand'

استفاده کنید. این کار راحته و مشکلی ایجاد نمی کنه، ولی اگر خواسته باشین این پست ها را صفحه بندی کنید به مشکل برمی خورید و اون اینه که برای هر صفحه کوئری اجرا می شه و ممکن است پست های نمایش داده شده در صفحات قبلی هم دوباره لیست بشن.

برای این منظور ما می تونیم از یک سشن (session) برای نگهداری پست های دیده شده استفاده کنیم و بر اساس اون از تابع RAND در mysql استفاده کنیم تا به نتیجه دلخواه برسیم.  فیلتر posts_orderby در وردپرس ما رو برای رسیدن به این منظور کمک می کنه. قطعه کد زیر رو باید در فایل functions.php قرار بدید.

if( !session_id() ) { session_start(); }
add_filter( 'posts_orderby', 'randomise_with_pagination' );
function randomise_with_pagination( $orderby ) {
        if( is_front_page() ) {
                if( ! get_query_var( 'paged' ) || get_query_var( 'paged' ) == 0 || get_query_var( 'paged' ) == 1 ) {
                        if( isset( $_SESSION['seed'] ) ) {
                                unset( $_SESSION['seed'] );
                        }
                }
                $seed = false;
                if( isset( $_SESSION['seed'] ) ) {
                        $seed = $_SESSION['seed'];
                }
                if ( ! $seed ) {
                        $seed = rand();
                        $_SESSION['seed'] = $seed;
                }
                $orderby = 'RAND(' . $seed . ')';
        }
        return $orderby;
}

==========
نمایش پست ها به ترتیب تصادفی و صفحه بندی آن
پست های تصادفی در وردپرس و صفحه بندی آن

اگر این مطلب را مفید ارزیابی کردید لطفا به اشتراک بگذارید .

ارسال نظر

» دیدگاه تان را فارسی بنویسید ، دیدگاه های انگلیسی و فینگلیش تایید نمی شوند .