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

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

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

 

خانم مش باقر

میزان تخفیف ۲۰۰۰ تومان

در قسمت قبلی این نوشته مقدمات ایجاد یک پوسته وردپرس رو با هم یاد گرفتیم ؛ برای یادآوری، مراحل رو مرور می کنیم :

اول فهمیدیم که مسیر فایل های یک پوسته در ساختار ورد پرس کجاست

دوم یاد گرفتیم اصلی ترین اجزای یک تم وردپرس چه فایل هایی هستند …

سوم با کاربرد فایل ها و نقش هرکدوم در پوسته آشنا شدیم …

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

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

اما برای شروع و آشنایی با روش کار با تابع و کاربردش در پوسته با یک مثال شروع می کنم ؛ قصد داریم نام سایت (وبلاگ) و توضیحاتی رو که در قسمت تنظیمات سایت قابل تغییر هست در بالای صفحه و در بخش هدر نمایش بدیم ؛ اول باید بریم سراغ فایل مربوطه در پوسته وردپرس یعنی فایل header.php و بعد پیدا کردن محل مناسب جهت درج کدهایی که مقادیر مورد نظر ما رو نمایش بدن … اگر روی فایل های ارائه شده در آموزش بخش ۱ کارمی کنید محل این تغییرات درست محل نوشته شدن عبارت Header در وسط تگ <h1> و محل توضیحات هم یک خط پایین تر به جای عبارت width = 960px خواهد بود . اما کدها :‌
کد نمایش نام سایت :

<?php
bloginfo( 'name'); 
?>

کد نمایش توضیحات سایت :

<?php
bloginfo( 'description'); 
?>

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

<?php
if (have_posts()) :
   while (have_posts()) :
      the_post();
      the_content();
   endwhile;
endif;
?>

حالا متن کد بالا رو خط به خط با هم بررسی کنیم !

در خط اول از طریق تابع have_posts بررسی می کنیم که آیا اصلا پست یا نوشته ای داریم ؟‌

در خط دوم با یک عبارت شرطی  پست های موجود رو یکی یکی تا انتها پیمایش می کنیم

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

در این خط با استفاده از تابع the_content متن پست مورد نظر رو به خروجی منتقل می کنیم (نمایش میدیم)

اگر به کلمه موجود که در توضیح خط دوم به شکل بولد نوشتم دقت کنید متوجه خواهید شد که همه پست های سایت وردپرس شما در همه ی حلقه ها در دسترس نخواهد بود! به بیان بهتر وردپرس به شما این امکان رو میده که پست هایی خاص رو از پایگاه داده فراخوانی کنید ؛ این فراخوانی می تونه بر اساس زمان ، دسته بندی ، برچسب و … باشه که وردپرس رو کاملا به یک واسطه قوی برای ذخیره و بازیابی داده ها مبدل می کنه ؛ پس وقتی از وجود پست در تابع have_posts و فراخوانی پست در تابع the_post صحبت می کنیم منظور وجود و فراخوانی در مجموعه داده یا Dataset جاری هست ، بعدا در مورد تشکیل و فراخوانی سفارشی داده ها بیشتر یاد می گیریم .

پس با اضافه کردن همین قطعه کد به فایل ایندکس و به جای عبارت “Content goes here”  متن نوشته های وردپرس در یک حلقه فراخوانی و نمایش داده خواهد شد . در کنار تابع the_content که متن پست رو به صورت کامل نمایش میده ، توابعی برای نمایش عنوان پست ، نام نویسنده ، دسته بندی ، تاریخ و … وجود داره که خیلی راحت می تونید از این آدرس پیداشون کنید و شکل نمایش پست رو به صورت دلخواه خودتون تنظیم کنید .

در قسمت بعدی به اضافه کردن نوار کناری یا ساید بار و تعریف منو یا فهرست خواهیم پرداخت …

توی اینترنت روش های مختلفی برای ساخت پوسته و ویرایش و تبدیل از اچ‌تی‌ام‌ال آموزش داده شده که منم خیلی هاش رو خوندم .

اما اینجا سعی می کنم با یک روش گام به گام و مفهومی این کار رو توضیح بدم تا اگر کسی حداقل اطلاعات رو داشت بدون گیج شدن بتونه یک پوسسته وردپرس رو تولید کنه !

همین اول کار بگم که منظور از پوسته همون تم (theme) هست چون ممکنه وسطای درس از کلمات مشابه استفاده کنم و باعث سردرگمی بشه…

خوب بریم توی آموزش :

اینجا یک فایل html ساده رو آماده کردم که به طور کلی به ما ساختار ساده یک صفحه وب رو نشون میده و می تونه مثل پلان ساختمان عمل کنه ؛ یعنی بدون نمایش جزئیات فقط دیواره و قسمت بندی کلی رو به ما معرفی کنه .

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

  • header.php
  • index.php
  • sidebar.php
  • footer.php
  • style.css

هر کدوم از این فایل ها یه وظیفه ای به عهده دارند که به مرور توضیح میدم ، اما قبل از اون روی لوکال هاست یا سرورتون به مسیر ورد پرس برید و از اونجا در مسیر wp-content/themes یک پوشه جدید ایجاد کنید.

حالا فایل های بالا رو داخل این پوشه ایجاد می کنیم و میرم سراغ ویرایشش

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

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

/*
 Theme Name: My First Theme
 */

همین عبارت کافیه تا وردپرس بفهمه اینجا یک پوسته با نام My First Theme قرار داره وتکمیل جزئیات بستگی به علاقه شخصی شما داره ولی  با دنبال کردن این لینک می تونین آگاهی تکمیلی در مورد معرفی پوسته به ورد پرس رو به دست بیارید .

اما برای ادامه میریم سراغ فایل header.php این فایل همونطور که از اسمش پیداست قسمت هدر سایت رو درخودش جا میده و با فراخوانی یکی از توابع پوسته به نام get_header(); میشه محتوای فایل هدر رو فراخوانی کرد.

مشابه هدر ، در فایل footer.php هم ما مجموعه ای از اطلاعات مشترک رو که قرار پایین صفحات به نمایش در بیاد قرار میدم و همونطور که میشه حدس زد با فراخوانی تابع get_footer(); به این محتوا دسترسی داریم .

باید گفتن نقش هدر و فوتر چندان نیاز به بیان کار فایل sidebar.php نیست چرا که ناگفته پیداست که این یکی هم یه مجموعه اطلاعات یا محتوای مشترک بین صفحات رو در خودش جا داده و هروقت از تابع get_sidebar(); استفاده کنیم این محتوا رو خواهیم دید .

و اما فایلی قرار زمینه ساز نمایش محتوای فایل های قبلی به علاوه محتوای متغیر سایت باشه ، فایل index.php خواهد بود؛ دقت کنید سه فایل قبلی به طور معمول یک محتوای مشترک رو در اکثر صفحات پوسته نمایش میدن اما ایندکس کارش اینه که بگه :

  • اولا چه محتوایی کجا فراخوانی بشه : یعنی جانمایی توابع get_header , get_footer() , get_sidebar()
  • ثانیا محتوای روزمره سایت یا وبلاگ رو به نمایش در بیاره

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

و اما پرکردن هر کدوم از فایل ها با کد مناسب … اگر فایل نمونه اولیه ای که قبلا با هم دیدیم رو در یک محیط ویرایشگر کد باز کنید خواهید دید که ساختار کاملا خوانا داره و میشه خیلی ساده به بخش های هدر / فوتر / سایدبار/ متن (کانتنت) تقسیمش کرد؛ خوب معما حل شد باید هر دسته از تگ ها رو که مربوط به بخش خاصی از صفحه میشن در فایل مناسبش کپی کنید ، بازم من برای آدمای تنبل این کار رو انجام دادم و داخل این فایل گذاشتم

تبریک میگم ! شما همین الان اولین پوسته وردپرس خودتون رو ساختید… می تونید از  طریق پیشخوان در قسمت پوسته ها فعالش کنید و نتیجه کارتون رو ببینید

اما حالا باید کمی دستکاریش کنیم تا بیشتر شبیه یک پوسته واقعی بشه…

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

رفرنس گذاری

به طور معمول محتوایی که ما در سایت هامون منتشر می کنیم یا تولیدیه یا اقتباسی (همون کپی/پیست خودمون) و یا ترکیبی (مثل کپی کردن بخشی از یک یادداشت یا ترجمه اون ) ؛ هرکدوم از این سه گروه حتی مطالب تولیدی هم نیاز به رفرنس گذاری دارند تا هم استناد مطالب حفظ بشه و هم از نظر حرفه ای حقوق تولید کننده اولیه مطلب رعایت شده باشه، به علاوه این رفتار کم‌کم باید به روش معمول در بین جامعه علمی تبدیل بشه تا اعتبار و دیسیپلین کاری‌مون بالا بره!

خوب طبیعتا چندین روش برای ارجاع به مطالب وجود داره ؛ روش هایی مثل قرار دادن لیست منابع در انتهای متن و یا ارجاع با لینک در قسمت های مربوطه و … هر کدوم از این روش ها مزایا و معایبی داره که اصلا مورد نظر من نیست  . بلکه مهم اصل پایبندی به ذکر منبع در ارائه محتواست.

جستجوی انگلیسی

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

سوال درست

از سال ۱۳۸۴ تا همین امروز در موارد و مشاغل مختلف به عنوان پشتیبان یا راهنما یا … مخاطب سوالات در زمینه های مختلف بوده و هستم . بر اساس تجربه می تونم بگم که کسانی که  پیش از بقیه به راه حل خواهند رسید ، کسانی هستند که مشکل شون رو درست تشریح می کنن و روز به روز به این جمله بیشتر ایمان میارم که :

یک سوال خوب نیمی از راه حل است!

برای اینکه خیلی کلی گویی نکرده باشم کمی در مورد سوال خوب توضیح میدم ؛

قبل هرچیز قانون اول کمک های اولیه رو یادآوری می کنم ! خونسردی خود را حفظ کنید؛ باور کنین وقتی شما در حال هیجان زدگی حرف می زنید یا می نویسید خیلی از جملات شما به شکلی پراکنده و غیر قابل درک خواهد بود ، پس انتظار کمک از کسی که هنوز نتونسته به علت بروز مشکل پی ببره کار چندان عاقلانه ای نیست !

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

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

چهارم؛ وقتی در برنامه نویسی به کسی میگین که فلان فایل ارور یا پیغام خطا میده ، در جواب خواهید شنید که چه خطایی؟ خوب پس وقت رو تلف نکنین و همون اول بگید که برنامه خطای X رو نمایش میده و متن خطا ، کدش یا هرچی در موردش می بینین از اول توضیح بدید.

موارد دیگه هم هست که اگه بخوام ادامه ش بدم یک پست مستقل نیاز داره .

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

تا ساعت ۱۱ خدانگهدار

Quisque ullamcorper enim vel tellus rhoncus et fermentum diam congue. Phasellus eu turpis lorem, id gravida nunc. In bibendum nulla vel quam pretium a fringilla erat ornare. Etiam hendrerit quam sed orci congue posuere laoreet urna condimentum. Nam vestibulum gravida semper. Maecenas ac nunc purus, et aliquam urna. Curabitur quis tellus vitae dolor tristique egestas. Fusce metus sem, accumsan vel auctor non, laoreet eget nulla. Donec lacinia elit ac nulla hendrerit at tincidunt justo facilisis. Praesent vel risus ut urna vestibulum fermentum. Pellentesque sollicitudin cursus blandit. In hac habitasse platea dictumst. Maecenas sed nulla sed lacus elementum dapibus. Praesent hendrerit semper tempor. Integer sollicitudin ultrices mattis.

Donec nec facilisis nisi. Vivamus tempor feugiat velit gravida vehicula. Donec faucibus pellentesque ipsum id varius. Ut rutrum metus sed neque ultricies a dictum ante sagittis. Proin in facilisis diam. Sed placerat imperdiet purus, id sollicitudin magna pretium sit amet. Vivamus orci dolor, iaculis at volutpat eget, fermentum vel quam. Nullam non neque urna, ut ultrices nisi. Nulla convallis aliquam tortor, a imperdiet massa aliquet vel. Cras eu ante turpis, ut ornare mauris. Maecenas orci erat, ullamcorper at semper in, sodales ac diam. Sed eu eleifend felis. Praesent fringilla, arcu id interdum egestas, ante lorem blandit leo, ac imperdiet velit sapien ac metus. Proin lectus sem, pellentesque eu consequat sed, pulvinar ut risus. Pellentesque ut rutrum mauris. Nunc id ante libero. Vestibulum luctus lectus nec neque tempor quis congue purus consequat.

Vestibulum non libero in quam vestibulum dignissim a sed sem. Nullam vitae est vitae urna rhoncus sollicitudin. Ut congue lacus molestie augue gravida vitae auctor tortor ornare. Vestibulum sollicitudin vestibulum urna ut tempus. Duis eget dui placerat dui interdum fermentum. Cras lorem nunc, elementum vitae rhoncus quis, aliquet vel erat. Duis elementum justo sed velit mattis semper. Maecenas vel lacus vel nulla suscipit tincidunt in quis nulla. Duis sed metus vitae nunc euismod lobortis.