نمایش لیست غیرتکراری برچسب های مطالب یک مجموعه در وردپرس
وردپرس بی شک یکی از بهترین تولیدات نرم افزاری دنیای امروز است، نرم افزاری که به گفته مت ملنوگ خالق این شاهکار متن باز، با بیش از ۴۹ میلیون بار دانلود ۱۸.۹ درصد از کل وب را پشتیبانی میکند.
وردپرس مانند دیگر ابزارهای مشابه خود روشی خاص برای استفاده دارد، روشی ساده و منحصر به فرد که وجه تمایز وردپرس از دیگر برنامه های مدیریت محتواست؛ در وردپرس تقریبا همه کاری از طریق حلقههای مشهور آن قابل انجام است، حلقه؛ کد ساده ای است که با استفاده از آن به مطالب نوشته شده در وردپرس دسترسی پیدا میکنیم و میتوانیم با فیلتر کردن و انتخاب موارد مورد نیاز، خروجی دلخواه از آن داشته باشیم و در صفحات و بخش های مختلف نمایش دهیم.
ساده ترین حلقه وردپرس به شکل زیر مطالب را نشان میدهد، این کد در سلسله مراتب قالب های وردپرس که قرار گیرد فیلترهای مورد نظر به آن اعمال شده و صفحات ما تولید میشوند.
<?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // // Post Content here // } // end while } // end if ?>
راه دیگر استفاده از حلقههای وردپرس برای داشتن کنترل بهتر استفاده از آبجکت Wp_Query با فرم استاندارد زیر است :
<?php // The Query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { echo '<ul>'; while ( $the_query->have_posts() ) { $the_query->the_post(); echo '<li>' . get_the_title() . '</li>'; } echo '</ul>'; } else { // no posts found } /* Restore original Post Data */ wp_reset_postdata();
خروجی این حلقه ها به راحتی فیلتر میشود تا فقط مطالب یک برچسب یا یک مجموعه خاص را نمایش داده سپس به راحتی موارد مورد نظر انتخاب میشوند تا اسم نویسنده، عنوان، متن، برچسب ها و … نمایش داده شوند، اما برای ساخت بعضی صفحات استفاده از این حلقه ها به این سادگی نیست!
در هنگام طراحی وب سایت اسب قرمز صفحاتی برای لیست پروژهها، همکاران و … در نظر گرفتیم، برای تولید این صفحات، مطالب در مجموعه مورد نظر ثبت شده و بنا به ضرورت برچسب مورد نظر برای آن ثبت میشود اما گاهی مطالب برچسب های تکراری دارند.
به صفحه پروژهها در وب سایت اسب قرمز نگاهی بیندازید، در این صفحه برچسب ها لیست شده اند و با کمی Jquery و Html5 مطالب مورد نظر را به شکل مناسبی نمایش میدهند، بعد از توضیحات بالا به این سوال میرسیم که راه حل لیست کردن غیرتکراری تگ های مطالب داخل یک مجموعه در وردپرس چیست؟
برای اینکار دو حلقه مجزا ایجاد کرد، در یک حلقه فقط برچسب ها و در حلقه دیگر مطالب را نمایش میدهیم.
برای ساخت حلقه اول با استفاده از تابع get_the_tags() برچسب های مطالب به دست می آیند، اما برچسبهای تکراری هم زیاد میشوند، برای حل این مشکل در حلقه ای که ایجاد کردیم یک آرایه شامل نام برچسب، آدرس برچسب، شناسه برچسب ایجاد کرده که در حلقه بعدی قابل استفاده باشند و آرایه دیگری شامل شناسه های برچسب ها ایجاد میکنیم، در نهایت با استفاده از تابع array_unique موارد اضافی این آرایه را حذف میکنیم.
$args = array ('cat'=> ‘CATEGORY ID’,'posts_per_page'=> -1,'orderby'=> 'title'); $wp_query = new WP_Query( $args ); if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); $projecttags = get_the_tags(); if ($projecttags) { foreach($projecttags as $tag) { $all_project_tag[$tag -> term_id]['name'] = $tag -> name; $all_project_tag[$tag -> term_id]['slug'] = $tag -> slug; $all_project_tag[$tag -> term_id]['id'] = $tag -> term_id; $all_tags_arr[] = $tag -> term_id; } } endwhile; endif; wp_reset_postdata(); $tags_arr = array_unique($all_tags_arr);
قسمت های مورد نیاز برای ساخت صفحه پروژه ها آماده شد! برای تولید این صفحه ابتدا باید لیست غیر تکراری برچسب ها را نمایش دهیم که این کار با داشتن دو آرایه که در کد بالا تولید کردیم به سادگی با یک حلقه PHP انجام میشود :
<ul> <li><a href="#" class="all">همه</a></li> <?php foreach($tags_arr as $tag_atr) { ?> <li> <a href="#" class="filter<?php echo $all_tags_arr_all[$tag_atr]['id']; <?"><?php echo $all_tags_arr_all[$tag_atr]['name'] ; ?> </a> </li> <?php } ?> </ul>
در نهایت در حلقه بعدی، لیست مطالب را نشان داده و شناسه برچسب را به عنوان یک مقدار به تگ HTML آن میدهیم تا جلوه بصری مورد نظر ایجاد شود.
با توجه به اینکه از این کد در چند صفحه باید استفاده شود، تابعی برای آن ساخته و در Fonctions.php قالب قرار داده تا در صفحات لازم به راحتی از آن استفاده کنیم.
در مطالب بعدی درباره سلسه مراتب قالبها در وردپرس خواهیم نوشت، تا قبل از انتشار این مطالب میتوانید با مراجعه به سایت وردپرس با سلسله مراتب قالبها بیشتر آشنا شوید.
و در پایان، نظر شما در مورد مزایا و معایب این نوع استفاده از حلقههای وردپرس چیست؟ به نظر شما صفحه پروژههای سایت ما با چه نوع کدی میتوانست این شکل کنونی را به خود بگیرد؟
نمیشه به جای WP_Query از چیز ساده تری مثل get_posts یا query_posts استفاده کرد ؟
همه این توابع یک کار رو انجام میدن ولی استفاده از Wp_Query بهتر و ساده تره و بیشتر توضیه میشه.
query_posts در نهایت برای اجرا Wp_Query رو اجرا میکنه و این کار سرعت سیستم رو میگیره و حافظه و پردازنده زیادی مصرف میکنه، همچنین چند بار درخواست به بانک اطلاعات میفرسته، به همین خاطر بهتره که برای همچین لوپ هایی ازش استفاده نشه.
mamnoon, faghat mishe 1 ref baraye WP baram moarefi konid. farsi khaheshan.
منابع زیادی برای آشنایی و کار با وردپرس به زبان فارسی در اینترنت موجوده، حتما سری به http://wp-persian.com بزنید، به نظر من بهترین جا برای شروعه و برای ادامه کار کمک میکنه…
خیلی عالی بود مرسی کاملا بدرد بخور