در این آموزش وردپرس می خوام نحوه ی ریدایرکت کاربران به مطالب تصادفی رو قرار بدم اگر در سایت شما کاربر وجود داره و می خواهید اعضا وقتی وارد سایت میشن به یک مطلب تصادفی بعد از ورود ریدایرکت بشن این آموزش رو دنبال کنید.
برای ریدایرکت کاربران به مطالب تصادفی یعنی وقتی کاربر وارد شد به صورت تصادفی به یکی از مطالب سایت ریدایرکت میشه و دفعه ی بعد به یه پست دیگه , یکی از ویژگی های این قابلیت اینه که مطالب سایت شما محبوب شناخته میشه حالت پیش فرض ورود یا پروفایل کاربری هست یا صفحه ی اصلی سایت , ممکنه کاربری یکی از مطالب سایت رو ندید با این کار به صورت تصادفی با کلیه ی مطالبی که در سایت وجو داره هم آشنا میشه و هم یه امتایز برای باز شدن پست هستش.
حالا بریم سراغ کدی که سبب میشه کاربران و اعضای سایت به صورت تصادفی به مطالب ریدایرکت بشن. ابتدا فایل Functions.php قالب رو باز کنید . کد زیر رو به این فایل اضافه کنید
add_action('init','random_add_rewrite'); function random_add_rewrite() { global $wp; $wp->add_query_var('random'); add_rewrite_rule('random/?$', 'index.php?random=1', 'top'); } add_action('template_redirect','random_template'); function random_template() { if (get_query_var('random') == 1) { $posts = get_posts('post_type=post&orderby=rand&numberposts=1'); foreach($posts as $post) { $link = get_permalink($post); } wp_redirect($link,307); exit; } }
همین کار تمومه … اما نکاتی درباره ی این کد با قرار دادن این کد در فایل فانکشن یک آدرس مثلا ( sitename.com/random ) در سایت شما ایجاد میشه و مشخص کننده اینه که اگر مطلب تصادفی وجود داره بعد از ورود کاربر مطلب تصادفی در این آدرس باز شود و به مطلب ها به صورت تصادفی ریدایرکت شود.
باگ هایی که در این روش ریدایرکت کردن کاربر وجود داره
1) اگر از افزونه w3 total cache استفاده می کنید این افزونه با آدرس هایی که با این کد به وجود میاد سازگاری نداره
/random/
/index.php?random=1
2) اگر از افزونه yoast wordpress seo استفاده می کنید به دلیل اینکه باید در این افزونه پیوند یکتا را روی نام نوشته قرار داد با ایند کد سازگاری نداره و این کد کار نمی کنه.