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

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

نحوه نمایش لیستی از نویسندگان به صورت صفحه بندی شده

اگر از وردپرس کاران به نسبت حرفه ای باشید حتماً می دانید که تگ الگو یا همان template tag یک روش ساده برای فیلتر و استخراج اطلاعات از پایگاه داده و نمایش آن در وب سایت نهایی است. به عنوان مثال ما می توانیم نام نویسنده یک پست را با استفاده از ;()the_author به دست آوریم. همچنین برای نمایش عنوان صفحه یا پست می توانیم از دستور ;()the_title بهره ببریم.

تگ های الگوی وردپرس قابلیت انعطاف فوق العاده ای دارند. برای نمونه این تگها به ما این امکان را می دهند تا وبسایت خود را کاملا بدون نیاز به استفاده از پلاگین های جداگانه سفارشی سازی کنیم. در این مقاله ما قصد داریم به شما نحوه ایجاد یک صفحه سفارشی که قادر است لیستی از کاربرانی که از مجموعه ای از این تگ های الگو استفاده می کنند را نشان دهیم. با ما همراه باشید.
در ضمن ما طوری این کار را انجام می دهیم که اطلاعات کاربران در چند صفحه نمایش داده شود. که در این صورت ممکن است یک صفحه برای وبسایت های خاص مورد نیاز باشد.

ایجاد الگوی سفارشی صفحه :

اول از همه یک فایل پی اچ پی جدید در پوشه قالب فعال شده خود ایجاد کنید. در این مثال من از قالب TwentyTwelve استفاده می کنم. سپس تگ کامنت یا همان comment tag را اضافه کرده تا آن را به عنوان یک الگوی صفحه ثبت کنید.

 

<?php
/*
Template Name: User Page
*/

حال در بخش ویرایشگر صفحه وردپرس یا WordPress page editor، آنرا به عنوان الگو برای صفحه نویسنده خود تنظیم کنید.

.

artabaz

.

نکته مهم این است که شما به هیچ عنوان نباید این فایل را تحت author.php نامگذاری کنید چرا که این نام به صورت پیشفرض توسط وردپرس برای نمایش آرشیو پستهای نویسنده رزرو شده است

فرمول و کوئری :

خب حالا بیایید فرمولی را تنظیم کنیم. برای این منظور الگوی جدیدی را که در بخش ویرایشگر کد یا code editor ایجاد کردیم باز کنید.
ابتدا لازم است تا تعداد کاربرانی که می خواهیم در هر صفحه نمایش داده شوند را مشخص کنیم. ما باید این تعداد را در متغیری با نام $number ذخیره و تنظیم کنیم. هر زمان هم که خواستید تعداد کاربران قابل نمایش در هر صفحه را تغییر دهید کافی است تا مقدار این متغیر را به تعداد کاربرد مورد نظر تغییر دهید.

$number = 10;

حال باید تکه کد زیر را به مجموعه دستورات اضافه کنید تا به شماره صفحه جاری اشاره شود.

 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

اکنون می خواهیم با استفاده از کد زیر تعداد کاربرانی که باید در صفحات از آنها صرف نظر شود را بشماریم. البته تاثیر این کد از صفحه دوم به بعد خواهد بود.

 

$offset = ($paged - 1) * $number;

سپس لازم است تا کاربرانی که در وبسایت ما ثبت نام کرده را را به دست آورده و تعداد نهایی آنها را با استفاده از تابع

()PHP count به مانند زیر به دست آوریم :

 

$users = get_users();
$total_users = count($users);

ما باید تعداد نهایی کاربرانی که در پارامترهای ما مورد جست وجو قرار گرفته اند را به دست آوریم. که این بخش شامل تعداد کاربرانی است که نمایش داده خواهند شد و البته شماره آفست.

 

$query = get_users('&offset='.$offset.'&number='.$number);

حال باید تعداد صفحات نهایی که لازم است ایجاد شوند را به دست آوریم. ما می توانیم این تعداد را با شمارش مبتنی بر تعداد نهایی کاربران ثبت شده، و همچنین تعداد کاربرانی که در هر صفحه هستند را به مانند زیر محاسبه کنیم :

 

$total_pages = intval($total_users / $number) + 1;

 

نمایش کاربران :

بعد از اینکه فرمول های مورد نیاز را تنظیم کردیم حال وقت آن رسیده که نتایج را روی صفحه نمایش دهیم.
در این مثال ما اطلاعات کمی از کاربر را نشان می دهیم. آواتار، نام کامل کاربر، و یه بیوگرافی کوتاه از کاربر جز اطلاعاتی است که نمایش داده خواهند شد.
این اطلاعات می توانند به ترتیب با استفاده از تگ های الگوی get_avatar و get_the_author_meta به شکل زیر مورد بازیابی قرار گیرند :

 


echo '<ul id="users">';
foreach($query as $q) { ?>
<li class="user clearfix">
<div class="user-avatar">
<?php echo get_avatar( $q->ID, 80 ); ?>
</div>
<div class="user-data">
<h4 class="user-name">
<a href="<?php echo get_author_posts_url($q->ID);?>">
<?php echo get_the_author_meta('display_name', $q->ID);?>
</a>
</h4>
<?php if (get_the_author_meta('description', $q->ID) != '') : ?>
<p><?php echo get_the_author_meta('description', $q->ID); ?></p>
<?php endif; ?>
</div>
</li>
<?php }
echo '</ul>';

 

صفحه بندی کردن :

مطمئناً ما قصد نداریم اطلاعات صدها کاربر را در یک صفحه نمایش دهیم. بنابراین ما باید لینک صفحه بندی ایجاد کرده و نتایج را در چند صفحه نمایش دهیم. در ضمن تنها در صورتی صفحه بندی را نمایش می دهیم که تعداد نهایی کاربران ثبت شده، بیشتر از تعداد کاربرانی باشد که در هر صفحه نمایش داده شده اند.
خوشبختانه وردپرس دارای یک تگ الگو به نام paginate_links() بوده که به راحتی به ما اجازه صفحه بندی کردن را می دهد.

 


<?php
if ($total_users > $total_query) {
echo '<div id="pagination" class="clearfix">';
echo '<span class="pages">Pages:</span>';
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => 'page/%#%/',
'current' => $current_page,
'total' => $total_pages
'prev_next' => false,
'type' => 'list',
));
echo '</div>';
}
?>

 

تمامی کدها در یکجا :

برای راحتی کار ما تمامی کدهایی که از ابتدای مقاله تا انتهای آن آورده شده را به صورت یکجا در زیر آورده ایم تا با یک عمل کپی ساده آنها را در صفحه الگوی خود داشته باشید :

 


<?php
$number = 10;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$offset = ($paged - 1) * $number;
$users = get_users();
$query = get_users('&offset='.$offset.'&number='.$number);
$total_users = count($users);
$total_query = count($query);
$total_pages = intval($total_users / $number) + 1;
echo '<ul id="users">';
foreach($query as $q) { ?>
<li class="user clearfix">
<div class="user-avatar">
<?php echo get_avatar( $q->ID, 80 ); ?>
</div>
<div class="user-data">
<h4 class="user-name">
<a href="<?php echo get_author_posts_url($q->ID);?>">
<?php echo get_the_author_meta('display_name', $q->ID);?>
</a>
</h4>
<?php if (get_the_author_meta('description', $q->ID) != '') : ?>
<p><?php echo get_the_author_meta('description', $q->ID); ?></p>
<?php endif; ?>
</div>
</li>
<?php }
echo '</ul>';
?>
<?php
if ($total_users > $total_query) {
echo '<div id="pagination" class="clearfix">';
echo '<span class="pages">Pages:</span>';
$current_page = max(1, get_query_var('paged'));
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => 'page/%#%/',
'current' => $current_page,
'total' => $total_pages,
'prev_next' => false,
'type' => 'list',
));
echo '</div>';
?>

در آخر هم برای زیبایی کار می توانید تغییراتی را در کدهای CSS خود بدهید.

 

 

 

ترجمه شده توسط تیم آرتاباز، هادی نجار.

 

 

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

۴ دیدگاه

  1. افشین

    سلام
    عالی بود
    خدا قوت

  2. Mj

    سلام، من یکم گیج شدم
    همه کد ها رو داخل فایل PHP گذاشتم و فایل PHP رو داخل فایل قالب قرار دادم
    اما در این مرحله (حال در بخش ویرایشگر صفحه وردپرس یا WordPress page editor، آنرا به عنوان الگو برای صفحه نویسنده خود تنظیم کنید.) درست متوجه نشدم. لطفا کمی بیشتر توضیح بدید

    • webelizer

      سلام
      یعنی یک برگه درست کنید و سپس از سمت چپ، الگو مربوطه رو انتخاب کنید تا زمانیکه اون برگه نمایش داده میشه، محتویاتش از فایل پی اچ پی تون خونده بشه.

  3. qazd

    سلام خیلی آموزش جالبی بود
    تشکر

پاسخ دادن به Mj لغو پاسخ

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