
نمایش آخرین نویسندگان فعال در وردپرس
اگر شما صاحب سایت وردپرسی هستید که کاربران نویسندۀ زیادی دارد، شاید بخواهید بدانید کدام یک از آنها اخیرا فعال تر بوده و مطلبی را منتشر کرده است. هیچ راهی برای به دست آوردن چنین اطلاعاتی بدون درخواست از پایگاه داده به صورت مستقیم وجود ندارد اما ما راه دیگری نیز برای رسیدن به این هدف پیدا کرده ایم. این راه که چگونگی کش کردن اطلاعات با استفاده از WordPress Transients API را نشان می دهد به شرح زیر می باشد:
ابتدا فانکشن را در فایل functions.php بسازید. از قرار دادن آن در میان تگ باز php مطمئن شوید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
function get_latest_authors( $number_of_authors = 10 ) { $args = array( 'orderby' => 'modified', 'post_type' => 'post', 'post_status' => 'publish', 'numberposts' => '-1' ); $count = 1; $recent_posts = wp_get_recent_posts( $args ); $latest_authors_array = array(); foreach( $recent_posts as $the_post ) { if ( $count == $number_of_authors ) break; if ( ! in_array( $the_post['post_author'], $latest_authors_array ) ) { $latest_authors_array[] =$the_post['post_author']; $count++; } } $latest_authors = '<ul>'; foreach( $latest_authors_array as $author_id ) { $latest_authors .= '<li><a href="'.get_author_posts_url( $author_id ).'">'.get_the_author_meta( 'display_name', $author_id ).'</a></li>'; } $latest_authors .= '</ul>'; return $latest_authors; } |
این تابع آخرین پست های منتشر شده شما را جمع آوری و آنها را به ترتیب آخرین تاریخی که اصلاح شده اند مرتب می کند. سپس از طریق لوپ کردن آنها، نویسندگان را مشخص می کند. وقتی آن تعداد از نویسندگانی که مد نظرتان است را برایتان پیدا کرد، فرایند لوپ کردن به پایان می رسد و لیست مورد نظر آماده و به شما تحویل داده می شود.
حال باید اطلاعات بدست آمده را خروجی بدهید:
1 |
<?php echo get_latest_authors(); ?> |
از آنجایی که تابعی مانند این، هر بار که به آن نیاز می شود این فرایند را طی می کند، ما می توانیم از WordPress Transients API به منظور کش کردن اطلاعات به دست آمده، بهره بریم. با این راه، تابع با توجه به زمانی که برای انقضای transient تنظیم کرده ایم اجرا خواهد شد. برای انجام این عمل تنها چیزی که نیاز است کمی کدنویسی است :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
function get_latest_authors( $number_of_authors = 10 ) { if ( false === ( $latest_authors = get_transient( 'latest_authors' ) ) ) { $args = array( 'orderby' => 'modified', 'post_type' => 'post', 'post_status' => 'publish', 'numberposts' => '-1' ); $count = 1; $recent_posts = wp_get_recent_posts( $args ); $latest_authors_array = array(); foreach( $recent_posts as $the_post ) { if ( $count == $number_of_authors ) break; if ( ! in_array( $the_post['post_author'], $latest_authors_array ) ) { $latest_authors_array[] =$the_post['post_author']; $count++; } } $latest_authors = '<ul>'; foreach( $latest_authors_array as $author_id ) { $latest_authors .= '<li><a href="'.get_author_posts_url( $author_id ).'">'.get_the_author_meta( 'display_name', $author_id ).'</a></li>'; } $latest_authors .= '</ul>'; set_transient( 'latest_authors', $latest_authors, 60 * 60 * 1 ); // one hour } return $latest_authors; } |
با انجام تغییرات بالا، تابع ما ابتدا وجود ترنزینت (transient) را چک می کند. در صورت وجود ترنزینت، به اطلاعات دسته بندی شده باز می گردد. در غیر این صورت تابع را اجرا و اطلاعات به دست آمده را در ترنزینتی که پس از یک ساعت غیرفعال می شود(۶۰ * ۶۰ * ۱)
ذخیره می کند. شما به راحتی می توانید با اصلاح آخرین پارامتر در تابع set_transient
زمان غیر فعال شدن ترنزینت را تغییر دهید.
استفاده از ترنزینت برای ذخیره کردن اطلاعات بدست آمده، راهی مفید برای افزایش سرعت سایت و کاهش تعداد عملیاتی است که مورد نیاز وردپرس می باشد. این همان کاری است که معمولا کدنویسان حرفه ای در وردپرس انجام می دهند.
وردپرس با طعم فارسی