طراحی سایت با وردپرس قسمت یازدهم


طراحی سایت با وردپرسوردپرس 

در طراحی سایت با وردپرس قسمت یازدهم به حلقه خواهیم پرداخت:

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

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

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

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

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

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

#جزییات حلقه

حلقه ابتدایی عبارت است از:

این حلقه می گوید زمانی که پست وجود دارد، پست ها از طریق حلقه نمایش داده شوند.

آن را با جزییات بیشتر بیان می کنیم:
  • تابع ()have_posts بررسی می کند که چه پستی در آنجا وجود دارد.
  • اگر آنجا پستی وجود داشته باشد، حلقه while به اجرا تا زمانی که شرایط داخل پرانتز حاکم است ادامه می دهد. تا زمانی که ()have_posts ادامه دارد، حلقه ادامه خواهد یافت.

#استفاده از حلقه

حلقه باید در index.php قرار بگیرد، و در دیگر قالب هایی که برای نمایش اطلاعات پست از آن استفاده می کنند. چون شما نمی خواهید بارها و بارها سربرگ خود را تکرار کنید، حلقه همیشه باید بعد از فراخوانی ()get_header قرار بگیرد. برای مثال:

در مثال بالا، پایان حلقه با یک endwhile و endif نمایش داده شده است. حلقه باید همیشه با if یکسان و while مشابه شروع شود، همانطور که در بالا اشاره شد و باید به end یکسان و مشابه ختم شود.

هر تگ قالبی که شما مایل به استفاده آن برای همه پست ها می باشید باید با بخش های آغازین و پایانی همراه باشد.
شما می توانید یک پیام ۴۰۴ “پیدا نشد” سفارشی را الحاق کنید که اگر هیچ پستی مطابق با معیارهای مشخص در دسترس نباشد. پیام باید بین بخش های endwhile و endif قرار بگیرد، همانند مثال زیر.
یک فایل بسیار ساده index.php باید مشابه باشد با:

#حلقه چه چیزی را می تواند نمایش دهد؟

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

  • ()next_post_link – یک لینک به ترتیب زمانی انتشار به بعد از پست فعلی
  • ()previous_post_link – یک لینک به ترتیب زمانی انتشار به قبل از پست فعلی
  • ()the_category – دسته یا دسته های همراه با پست یا برگه های در حال مشاهده
  • ()the_author – نویسنده پست یا برگه
  • ()the_content– محتوای اصلی برای پست یا برگه
  • the_excerpt()  – ۵۵ کلمه اول از محتوای اصلی یک پست نمایش داده شده توسط (…) یا لینک ادامه مطلب که شما را به متن کامل پست هدایت می کند. شما همچنین ممکن است از “Excerpt” برای سفارشی سازی اندازه ی خاصی از گزیده مطلب استفاده کنید.
  • ()the_ID – شناسه برای پست یا برگه
  • ()the_meta  – فیلدهای سفارشی همراه با پست یا برگه
  • ()the_shortlink  – یک لینک به برگه یا پست استفاده شده از آدرس سایت و شناسه پست یا برگه
  • ()the_tags– برچسب یا برچسب های همراه پست
  • ()the_title – عنوان برگه یا پست
  • ()the_time  – تاریخ یا زمان برای پست یا برگه. می تواند با استفاده از فرمت استاندارد توابع تاریخ php مورد استفاده قرار گیرد.

شما همچنین می توانید از تگ های شرطی استفاده کنید، همانند:

  • ()is_home –  اگر صفحه فعلی، صفحه خانگی باشد true را برمی گرداند.
  • ()is_admin – اگر درون پنل مدیریت باشید true را برمی گرداند، در جای دیگر false بر می گرداند.
  •  ()is_single  – اگر صفحه فعلی، صفحه تک پست باشد true را برمی گرداند.
  •  ()is_page – اگر صفحه فعلی، صفحه برگه یکتا باشد true را برمی گرداند.
  •  ()is_page_template – می توانید برای تعیین این که یک برگه از قالب خاص استفاده می کند از آن استفاده کنید. برای مثال: is_page_template('about-page.php')
  •  ()is_category – اگر برگه یا پست دسته ای خاص داشته باشند true برمی گرداند. برای مثال: is_category('news')
  •  ()is_tag– اگر برگه یا پست برچسب خاصی داشته باشند true را برمی گرداند.
  •  ()is_author– داخل برگه آرشیو نویسنده true را برمی گرداند.
  •  ()is_search– اگر صفحه فعلی صفحه نتایج جستجو باشد true را برمی گرداند.
  • ()is_404  – اگر صفحه فعلی وجود نداشته باشد true را برمی گرداند.
  • ()has_excerpt – اگر برگه یا پست گزیده ای داشته باشند true را برمی گرداند.

 

#مثال ها

#مثال های ابتدایی

#آرشیو بلاگ

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

#پست منحصر به فرد

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

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

 #مثال های متوسط

#حالات پست ها از برخی دسته بندی های متفاوت

مثال زیر چند چیز را متصل می کند:

  • ابتدا، هر پست دارای عنوان، زمان، نویسنده، محتوا و دسته بندی را نمایش می دهد، مشابه مثال پست منحصر به فرد بالا.
  • بعدا، این امکان را فراهم می کند که دسته بندی با شناسه ۳ حالت متفاوتی به خود بگیرد، از تگ قالب ()in_category استفاده می کند.

توضیحات کد در مثال زیر جزییات هر مرحله در سراسر آن کد را شرح می دهد:



#حلقه های متعدد

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

#استفاده از ()rewind_posts

شما می توانید از ()rewind_posts مطابق برخی از کویری ها مجدد استفاده کنید. اگر شما بخواهید برخی از کویری ها را دوباره در محل های مختلف از  یک صفحه نمایش دهید این قابل استفاده خواهد بود.

#ایجاد کویری ثانویه و حلقه

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

شما می توانید در مثال بالا ببینید که ما ابتدا حلقه منظم را نمایش داده ایم. سپس یک متغیر جدید تعریف کرده ایم که WP_Query برای پرس و جوی یک دسته بندی خاص استفاده می کند؛ در این مورد، ما slug از نوع example-category را انتخاب کرده ایم.

توجه داشته باشید که حلقه منظم در مثال بالا دارای تفاوت می باشد: برای تنظیم مجدد داده های پست ()wp_reset_postdata را فراخوانی می کند.

قبل از اینکه شما بخواهید از یک حلقه ثانویه استفاده کنید، شما نیاز به تنظیم مجدد داده های پست دارید. در اینجا دو روش برای آن وجود دارد:

  1. توسط استفاده از تابع ()rewind_posts ؛ یا
  2. توسط ایجاد اشیا جدید کویری.

#تنظیم مجدد حلقه های متعدد

این مهم است که زمانی که ما از حلقه های متعدد در پوسته استفاده می کنیم آن را تنظیم مجدد نماییم. چیزی انجام نمی دهد بنابراین می تواند منجر به نتایج غیره منتظره با توجه به چگونگی ذخیره داده ها و استفاده از متغیر سراسری post$ شود. اینجا سه راه اصلی برای تنظیم مجدد حلقه بسته به این که کدام راه فراخوانی شود وجود دارد:

#استفاده از wp_reset_postdata

زمانی که شما در حال اجرای حلقه های سفارشی یا متعدد با WP_Query می باشید از wp_reset_postdata استفاده کنید. این تابع متغیر سراسری post$ را به پست فعلی در کویری اصلی بازمی گرداند. اگر شما می خواهید از بهترین روش پیروی کنید، این برترین تابعی است که شما برای تنظیم مجدد حلقه ها استفاده خواهید کرد.

به درستی از این تابع استفاده کنید، کد زیر را بعد از هر حلقه با WP_Query قرار دهید:

#استفاده از wp_reset_query

از  wp_reset_query  برای بازیابی WP_QUERY و داده سراسری post$ در کویری اصلی استفاده کنید. اگر شما با حلقه از ()query_posts استفاده کرده باشید باید از این تابع برای تنظیم مجدد استفاده نمایید. شما می توانید از آن بعد از حلقه های سفارشی WP_Query استفاده کنید چون در واقع وقتی اجرا می شود ()wp_reset_postdata  را فرا می خواند.

با این حال، بهترین روش استفاده از ()wp_reset_postdata با هر حلقه که شامل WP_Query است، می باشد.

()query_posts بهترین روش نیست و اگر در همه جا ممکن است باید از آن اجتناب کرد. از این رو، شما نباید از ()wp_reset_queryزیاد استفاده کنید.

به درستی از این تابع استفاده کنید، کد زیر را بعد از هر حلقه با()query_posts قرار دهید.

در ادامه توابع قالب را مورد بررسی قرار خواهیم داد همچنین می توانید در مطلب قبلی تگ های قالب را بخوانید.




مطالب مرتبط با این دسته بندی