پس از معرفی الگوریتم رتبه بندی پاندا در سال ۲۰۱۱ توسط گوگل، محتوای تکراری به یکی از عوامل افت رتبه سایت ها در نتایج جستجوی گوگل تبدیل شد. یکی از ساده ترین دلایل برای توضیح آن، گیج شدن گوگل هنگام ایندکس مطالب یک سایت بود. چون گوگل نمی تواند به درستی تشخیص دهد که آدرس اصلی محتوا کدام بوده و در نتیجه آن را به عنوان محتوای تکراری در نظر می گیرد. همچنین گوگل نمی تواند به درستی تشخیص دهد که کدام صفحه باید رتبه بهتری نسبت به دیگری در نتایج جستجو داشته باشد. (برای آشنایی با تعریف و انواع مختلف محتوای تکراری مقاله: محتوای تکراری و جریمه سایت را بخوانید.)
یکی از اشتباهات رایج در میان وبمستران، استفاده نادرست از تگ کنونیکال (rel= canonical) است که موجب اشتباه گوگل هنگام ایندکس مطالب سایت شده و برخی از صفحات را اشتباها به عنوان محتوای تکراری در نظر می گیرد. کاربرد اصلی تگ canonical در تعیین آدرس اصلی محتوا برای ایندکس گوگل است. استفاده نادرست از این تگ باعث می شود که سیگنال های رتبه گیری در نتایج گوگل میان این صفحات تقسیم شده و نهایتا رتبه خوبی نصیب صفحه اصلی محتوا نشود.
با گسترش بازاریابی محتوایی در جهان و ایران به عنوان ابزار کمکی برای سئو سایت، رقابت در تولید محتوا در برخی حوزه ها بشدت بالا گرفته است. حال استفاده نادرست از تگ canonical به معنای این است که شما رقیب خود در سئو شده اید و به تعداد رقبایتان در رسیدن به صدر نتایج گوگل افزوده شده است. با اینکه این نکات تکنیکال سئو ساده به نظر می رسد، اما بسیاری از سایت های مشهور نیز آن ها را به درستی اجرا نکرده و ترافیک ورودی شان از گوگل کاهش می یابد. یکی از عواملی که باعث تشدید ناخواسته محتوای تکراری برای سایت ها می شود، تغییر آدرس سایت از HTTP به HTTPS بود که در ادامه مفصلا در مورد آن بحث خواهیم کرد.
وجود چندین آدرس URL برای یک محتوا اصلا چیز عجیبی نیست. این مشکل می تواند به دلیل اشتباه در استفاده از نکات تکنیکال سئو در درون سایت و یا کپی مطالب سایت شما توسط افراد دیگر باشد. در ادامه ۷ دلیل رایج برای وجود محتوا با چندین آدرس URL ذکر شده است:
معمولا مشکلات فوق به صورت همزمان برای یک سایت پیش می آید و خطر افت رتبه سایت در گوگل را به دلیل محتوای تکراری چند برابر می کند. بدترین اتفاق وقتی می افتد که صفحه اصلی سایت دارای چندین آدرس URL باشد، برای مثال به صورت زیر باشد:
http://example.com/home
http://www.example.com/ home
https://example.com/ home
https://www.example.com/ home
فرض کنید آدرس URL اصلی سایت شما به صورت https://www.example.com باشد. برای تعیین این آدرس URL به عنوان تگ canonical ، این کد را در هد HTML سایر ورژن ها قرار می دهید:
<link rel=”canonical” nolink=”https://www.example.com” />
حتی در URL اصلی سایت نیز این کار را انجام می دهید و به آدرس خودش کنونیکال می کنید. این کار شاید برای برخی سوال برانگیز باشد اما طبق تجربه وبمسترانی که این کار را انجام داده اند تاکنون به مشکلی برنخورده اند.
متاسفانه چیزی که در عمل از کاربرد تگ canonical در سایت ها مشاهده می شود، استفاده اختصاصی از آن برای هریک از URL ها است. یعنی در همه ی صفحات از تگ canonical استفاده شده است، اما هر کدام به URL خودشان آدرس داده اند ! به طور مثال:
http://example.com/page canonical = http://example.com/page
http://www.example.com/page canonical = http://www.example.com/page
https://example.com/page canonical = https://example.com/page
https://www.example.com/page canonical =https://www.example.com/page
چنین کاری مثل این است که هر صفحه به گوگل بگوید: من صفحه اصلی هستم، من را ایندکس کن” و این کار موجب گیج شدن گوگل در ایند و رتبه بندی نادرست سایت در نتایج جستجو می شود. مسائل این چنینی موجب کاهش اعتبار سایت شما از دیدگاه گوگل شده و رتبه سایتتان را در نتایج جستجو کاهش می دهد.
تغییر آدرس URL سایت از HTTP به HTTPS کار خوبی است که موجب بهبود امنیت و سرعت سایت شده و از نظر سئو نیز امتیاز مثبتی محسوب می شود. اما مشکل زمانی پیش می آید که سایتی به طور همزمان هر دوی این ها را داشته باشد. حتی در موارد زیادی در تگ canonical سایت ها هر آدرس با HTTP و HTTPS نیز وجود دارند. این اشتباه عموما به دو دلیل رخ می دهد:
یکی از ساده ترین راه ها استفاده از دستور ریدایرکت 301 است، که سریع تر و راحت تر هم اجرا می شود. اما زمانی که استفاده از تگ canonical اهمیت داشته باشد، باید در هر صفحه آدرس URL اصلی را تعیین کنید که کمی زمان گیر و سخت تر است. افرادی که از CMS وردپرس برای سایتشان استفاده می کنند هم با بکارگیری پلاگین wpseo_canonical filter می توانند یکی از HTTP یا HTTPS را به عنوان URL اصلی سایت و زیر دامنه ها تعیین کنند.
رعایت این نکات ساده می تواند سایت شما را از وجود محتوای تکراری ناخواسته رها کند و رتبه سایتتان را در نتایج گوگل به راحتی ارتقا دهد.
24دسامبر20166:30تحریریه وبسیما63
شاید اخیرا نام child theme ها یا پوسته فرزند وردپرس به گوشتان خورده. می گویند فلان قالب چایلد تم دارد و تغییرات آن در چایلد تم ذخیره شده. اما واقعا چایلد تم یعنی چه و چه کاربردی دارد؟
در واقع شما هر قالبی که روی سایتتان نصب کنید ، خصوصا اگر آن قالب جزو قالب های حرفه ای وردپرس باشد نیاز دارید تا قالب خود را هر از گاهی آپدیت کنید تا امکانات بیشتری به آن اضافه شود و مشکلات آن نیز برطرف شود. کاری که هر روزه ما در میهن وردپرس انجام می دهیم و آپدیت قالب ها و افزونه های حرفه ای را ارائه می کنیم.
اما از طرفی شما نیاز دارید تا تغییراتی را روی قالب خودتان اعمال کنید. مثلا به سایتتان سی اس اس جدیدی اضافه کنید یا فایل فوتر قالب را تغییر دهید. پس با آپدیت قالب تغییرات شما از بین می رود و شما می مانید و یک عالمه کار روی قالب نسخه جدید که باید با هر بار آپدیت همه اینکار ها را انجام دهید.
اما با روی کار آمدن چایلد تم ها دست ما برای انجام تغییرات روی قالب وردپرس باز شده. تنها با ساخت ، نصب و فعالسازی یک چایلد تم از قالب سایتتان می توانید به راحتی تغییرات دلخواه را روی چایلد تم اعمال کنید و دیگر از بابت از بین رفتن تغییرات نگران نباشید.
در واقع با نصب چایلد تم ، شما دو قالب بصورت همزمان روی وردپرس فعال کرده اید. یکی قالب اصلی که به مرور می توانید آپدیتش کنید و دیگری چایلد تم یا پوسته فرزند هست که تغییرات دلخواه خود را روی آن اعمال خواهید کرد. با آپدیت قالب اصلی به هیچ عنوان تغییرات شما از بین نمی رود چرا که آنها را روی چایلد تم دارید و از چایلد تم روی سایت شما بارگذاری می شوند.
بارها و بارها در بخش کدهای وردپرس گفتیم که کد زیر را در functions.php قرار دهید و یا فایل Functions.php سایت خود را باز کنید. اما واقعا فایل functions.php چیست و چه کار می کند؟ برای پاسخ به این سوالات در این مقاله با من همراه باشید…
در واقع فایل فانکشن در قالب ها و افزونه های وردپرس استفاده می شود. یک فایل php هست که توابع و کد های اختصاصی برای تغییر و اختصاصی سازی وردپرس را در آن قرار می دهیم. این کد ها در کل سایت شما اجرا می شوند و تغییرات دلخواه شما را در قالب سایتتان اعمال می کنند. مثلا افزودن یک فهرست به قالب سایت یا افزودن ابزارک یا هر تغییر دیگری. هر کد php که شما در این فایل وارد کنید در تمامی بخش های سایت شما اجرا می شود. به عنوان مثال می توانید در این فایل بنویسید: میهن وردپرس. در تمامی صفحات سایت شما حتی در پنل مدیریت وردپرس هم این متن نمایش داده می شود. اما این فایل برای نمایش متن در تمامی صفحات نیست. شما باید توابع اجرایی را در این فایل قرار دهید که نیازی به نمایش ندارند و فقط اجرا می شوند و تغییراتی را روی سایت شما اعمال می کنند.
به راحتی! وارد پوشه قالب سایتتان شوید و یک فایل به نام functions.php آنجا ایجاد کنید. این فایل رو خالی بگذارید تا ساختار اون رو براتون توضیح بدم.
تنها چیزی که درباره فایل functions.php مهم هست اینست که باید ابتدای این فایل کد <?php و در انتهای آن از ?> استفاده کنید. به این شکل:
<?php کد های شما در اینجا ?>
در قسمت کد های شما ، می تونید کد های دلخواه خود را اضافه کنید. کد هایی که اضافه می کنید دیگر نیازی به باز کردن و بستن php به شکل <?php و ?> ندارند.
در این مطلب از وبسایت راکت قصد داریم در ارتباط با موضوعی صحبت کنیم که تقریبا تمام کاربران اینترنت با آن سر و کار دارند: مرورگر. البته بحث در ارتباط با این موضوع میتواند به مقالات بسیار زیادی منجر شود به همین خاطر من قصد دارم در ارتباط با یکی از سناریوها در کار با مرورگر صحبت کنم.
قبل از آنکه وارد بحث اصلی شوم نیاز است تا ابتدا به درک مشترکی از URL برسیم. منظورمان از URL چیست؟
Uniform Resource Locator را در فارسی میتوان با عبارت «مکان یکنواخت منبع» ترجمه کرد که ظاهرا چندان عبارت جذابی نیست. با این حال اگر کمی با انگلیسی آشنایی داشته باشید میتوانید از طریق خود عبارت انگلیسی متوجه شوید که URL دقیقا چیست. URL آدرس جاییست که شما قصد مراجعه به آن از طریق مرورگر برای دریافت اطلاعات و برقراری یکسری ارتباطات و تعاملات را دارید. چنین سناریویی در دنیای واقعی نیز اتفاق میافتد. برای مثال اگر شما قصد مراجعه به یک دوست را داشته باشید نیاز دارید که آدرس خانه وی را بدانید، اگر بخواهید از طریق رومه به یکسری اطلاعات دسترسی پیدا کنید باید آدرس رومهفروشیهای شهر را بدانید. دقیقا این حالت در دنیای وب نیز وجود دارد با این تفاوت که مکانها به صورت مجازی تعریف شدهاند. در چنین ساختاری وبسایتها مانند خانههای افراد و URLها مانند آدرس این خانهها هستند.
حال که با خود URL آشنا شدیم بیایید با بخشهای مختلف آن نیز به صورت کاملتر آشنا شویم.
آدرس URL زیر را در نظر بگیرید:
https://www.example.com/page1
اولین قسمت این آدرس https است. این قسمت به مرورگر میگوید که باید از چه پروتکلی استفاده کند. این پروتکل میتواند http، https، ftp و… باشد. یک پروتکل در حقیقت مجموعهای از قواعد است که مرورگر برای ارتباط برقرار کردن با شبکه از آن استفاده میکند. https را میتوان به صورتهایی یک نسخه امن از http دانست که در آن دادهها رمزنگاری میشوند.
قسمت بعدی www.example.com است که با نام domain یا دامنه شناخته میشود. در واقع این قسمت آدرس واقعی وبسایت مورد نظر (خانه مورد نظر) است. با استفاده از این آدرس میتوانید به سروری که دادههای وبسایت در آن قرار گرفته دسترسی پیدا کنید. این موضوع را در نظر بگیرید که دامنه و URL هر دو آدرس وبسایت هستند با این تفاوت که URL نسخهای کاملتر از دامنه را ارائه میکند. دامنه نیز خود بخشی از یک URL است.
دامنه نامی منحصر به فرد برای هر وبسایت است. در واقع این منحصر به فرد بودن باعث میشود که در دنیای بزرگ وب، وبسایتها از همدیگر جدا باشند. اما یک مسئله بسیار مهم وجود دارد و آن این است که مرورگر مانند ما با وبسایتها تعامل ندارد. برای مثال زمانی که ما قصد وارد شدن به وبسایت گوگل را داریم تنها کاری که باید بکنیم وارد کردن آدرس google.com و زدن کلید Enter است. اما مرورگر برای دسترسی به این وبسایت از نام آن استفاده نمیکند بلکه سراغ آدرس IP آن میرود. منظور آدرس IP کامپیوتری است که اطلاعات مربوط به وبسایت در آن ذخیره شده است. حال شاید بپرسید که ما چه نیازی به نام دامنه داریم؟ چرا از همان آدرس IP استفاده نمیکنیم؟ واقعیت آن است که آدرس IP یک عدد نسبتا طولانی بوده و برای هر وبسایتی متغیر است. در حقیقت برخی از وبسایتها نیز چندین آدرس IP دارند. به همین خاطر به خاطر سپردن این آدرسها میتواند کار بسیار سختی باشد. نام دامنه بدین دلیل تعریف شده است.
میتوانید این مسئله را مانند لیست مخاطبین موبایلتان در نظر بگیرید. شما نمیتوانید شماره تک تک افراد را در ذهنتان نگهدارید به همین خاطر با استفاده از یکسری کلمات روی شمارههای آنها، نامهایی را قرار میدهید.
حال شاید بپرسید که چگونه این آدرسهای IP ذخیره میشوند؟ چگونه آدرسهای IP با نام دامنهها منطبق میشوند؟ این کار از طریق یک دیتابیس بزرگ انجام میشود که به ازای هر آدرس IP یک نام دامنه را در نظر گرفته است. چنین سیستمی که بتواند نامها و آدرسها را با همدیگر تطبیق دهد DNS یا Domain Name System نامیده میشود.
حال که با موارد مقدماتی آشنا شدیم بیایید با مسئله اصلی مطلب یعنی وارد کردن یک آدرس در مرورگر ادامه دهیم. بعد از آنکه یک آدرس را در مرورگر وارد کرده و کلید Enter را فشار دادید اولین کاری که باید انجام شود پیدا کردن آدرس IP مربوط به صفحهایست که شما آدرس آن را وارد کردهاید. DNS به شما در انجام این کار کمک میکند. میتوان DNS را درست مانند یک دفترچه تلفن در نظر گرفت که به ما در پیدا کردن شماره تلفن یک شخص خاص کمک میکند.
در تصویر بالا میتوانید یک کلیت سادهای در ارتباط با شیوه کار مرورگر و DNS را مشاهده کنید. اما بیایید این روند را به صورتی عمیقتر بررسی کنیم.
۱. بعد از وارد کردن آدرس صفحه و انتخاب دکمه Enter، کش مرورگر ابتدا بررسی میشود. مرورگر همواره نسخهای از رکوردهای DNS را برای خود نگه میدارد. دادههای مربوط به این رکوردها، وبسایتهایی هستند که قبلا به آنها مراجعه کردهاید. در این حالت DNS به سرعت آدرس IP را پیدا کرده و نتیجه را برمیگرداند.
۲. اگر آدرس IP در مرحله اول پیدا نشد، DNS در کش سیستم عامل با استفاده از router cache به دنبال وبسایت مورد نظر خواهد بود.
۳. اگر دو مرحله قبلی چاره کار نبودند، DNS سراغ سرور اصلی برای DNSها میرود. سروری که تحت عنوان Resolver Server شناخته میشود. این سرور چیزی نیز جز سرویسدهنده اینترنت یا همان ISP شما.
۴. اگر در مراحل قبلی چیزی پیدا نشد، درخواست به سرور ریشه سلسله DNS میرود. اینجا قسمتی است که به ما کمک میکند تا اطلاعات مورد نظرمان را پیدا کنیم. اگر آدرس IP ما مربوط به دامنه سطح بالا یا TLD باشد، ISP یا همان سرور Resolver میتواند از اطلاعات سرور TLD استفاده کند.
۵. در این مرحله Resolver از TLD میخواهد که آدرس IP مربوط به وبسایت را برگرداند. TLD نیز Resolver را به Authoritative Name server ارجاع میدهد که در واقع مکان اصلی ذخیره اطلاعات مربوط به دامنههاست.
۶. در نهایت پس از یافتن اطلاعات ISP اطلاعات مورد نظر را به مرورگر برمیگرداند.
بعد از دریافت آدرس IP، سرور ISP اطلاعات مربوط به آن را در کش خود قرار میدهد. در این حالت دیگر نیازی به طی کردن مراحل ۴-۵-۶ نخواهد بود. از طریق تصویر زیر میتوانید آیتمهایی که بررسی کردیم را نیز مشاهده نمایید:
بعد از آنکه آدرس IP مورد نظر پیدا شد، یک ارتباط جدید شکل میگیرد. این ارتباط بین کلاینت و سرور ایجاد میشود. برای برقراری چنین ارتباطی نیاز است تا از پروتکل اینترنت استفاده شود که TCP/IP شناختهشدهترین مورد در بین پروتکلهاست. این ارتباط با استفاده از یک فرایند جدید با نام TCP ۳-way handshake ایجاد خواهد شد. برای درک بهتر بیایید به صورت قدم به قدم آن را بررسی کنیم:
۱. کامپیوتر کلاینت یعنی کامپیوتر شما یک پیغام SYN را ارسال میکند. اینکار برای بررسی آماده بودن کامپیوتر دوم جهت ایجاد یک ارتباط جدید انجام خواهد شد.
۲. بعد از آن اگر کامپیوتر دوم برای این ارتباط آمادگی داشت یک پیغام acknowledge را ارسال میکند.
۳. بعد از اینکه کامپیوتر اول پیغام را دریافت کرد یک پیغام ACK را برای سرور یا همان کامپیوتر دوم نیز ارسال میکند.
از طریق تصویر زیر میتوانید این سه مرحله را مشاهده کنید:
در نهایت یک ارتباط جدید بین دو کامپیوتر اول و دوم ایجاد خواهد شد. حال هر دو کامپیوتر میتوانند با همدیگر ارتباط برقرار کرده و اطلاعات را به اشتراک بگذارند. بعد از ایجاد یک ارتباط موفق مرورگر که روی کامپیوتر کلاینت قرار گرفته یک درخواست را برای سرور در جهت دریافت اطلاعات ارسال میکند. سرور نیز براساس این درخواست پاسخ مرتبطی را ارائه میدهد. این پاسخ میتواند شامل اطلاعاتی مانند متن، کد وضعیت، کنترل کش و… باشد.
در پایان
در این مطلب از وبسایت راکت به صورتی بسیار ساده در ارتباط با شیوه کارکرد مرورگر و اتفاقاتی که بعد از وارد کردن یک آدرس در آن میافتد توضیح دادیم.
تا به حال فکر به این فکر کرده اید که چگونه می توانید برای انواع پست های سفارشی خود در وردپرس، آی های سفارشی اضافه کنید؟ در این مقاله به شما نشان خواهیم داد که چطور می توانید این کار را انجام دهید. وردپرس با استفاده از یک فونت آی به نام Dashicons از وردپرس 3.8 آغاز شده است. این آی فونت نگاهی بزرگ به هر دستگاه یا اندازه صفحه نمایش دارد. شما می توانید از این آی ها برای پست تایپ های خود بعنوان آی اختصاصی سفارشی استفاده کنید.
اولین گام ، نصب و راه اندازی افزونه CPT Custom Icon است. بعد از فعالسازی، به مسیر تنظیمات » CPT Custom Icon Settings بروید. در آنجا لیست انواع پست های سفارشی خود را خواهید دید. سپس روی دکمه ‘Choose icon’ برای انتخاب نوع فونت کلیک کنید.
اگر به تازگی یک پست تایپ سفارشی ثبت کرده اید، به شما توصیه می کنیم، که از افزونه Custom Post Type UI برای ایجاد و مدیریت و طبقه بندی پست تایپ های سفارشی استفاده کنید. یک آی برای پست تایپ سفارشی به وسیله ی افزونه CPT UI ایجاد کنید. این افزونه بطور پیش فرض از Dashicons پشتیبانی می کند. بنابراین به وب سایت Dashicons رفته و آیی را که برای پست تایپ خود می خواهید انتخاب کنید.
با کلیک بر روی یک آی در لیست، نسخه بزرگتری از آی ها در بالا نمایش داده می شود. در کنار آن می توانید آی کلاس css را مشاهده کنید. شما باید سی اس اس را کپی و پست تایپ سفارشی را که می خواهید در CPT UI ویرایش شود را، ویرایش کنید. برای اینکار روی لینک Advanced Options کلیک و در پایین قسمت آی منو سی اس اس را در آن جایگذاری کرده و سپس تغییرات را ذخیره کنید.
برای آی می توانید تصویری مطابق میل خود انتخاب و آن را با کلیک کردن بر روی رسانه > بارگذاری آپلود کنید. بعد از آپلود بر روی لینک ویرایش کلیک و آدرس تصویر را کپی کنید. سپس آدرس را درفیلد آی منو در قسمت تنظیمات CPT UI جایگذاری کنید.
اگر پست تایپ سفارشی را با قرار دادن یک کد در افزونه و یا با فایل functions.php ایجاد کرده اید می توانید آی های منو را بطور دستی وارد کنید. یک بار دیگر به وب سایت Dashicons رفته و یک آی انتخاب و سی سی اس کلاس را کپی کنید. بعد از این، آن را در کد پست تایپ سفارشی اضافه کنید. مانند:
'menu_icon' => 'dashicons-cart',
همچنین می توانیدآدرس کامل از یک فایل تصویری را بعنوان نماد نمایش دهید. مانند:
'menu_icon' => 'http://www.example.com/wp-content/uploads/2014/11/your-cpt-icon.png',
یک قطعه کد کامل که باعت ایجاد یک پست تایپ سفارشی به اسم محصولات به همراه یک منوی آی می شود:
// Register Custom Post Type function custom_post_type() { $labels = array( 'name' => _x( 'products', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Product', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Products', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), ); $args = array( 'label' => __( 'Products', 'text_domain' ), 'description' => __( 'Post Type Description', 'text_domain' ), 'labels' => $labels, 'supports' => array( ), 'taxonomies' => array( 'category', 'post_tag' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'menu_icon' => 'dashicons-cart', 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'Products', $args ); } // Hook into the 'init' action add_action( 'init', 'custom_post_type', 0 );
یک برنامه نویس خوب دارای مهارت های فنی و همینطور مهارت های نرم و محکم است. متاسفانه برنامه نویس بعد هیچکدام از این مهارت ها را به خوبی در خود تقویت نکرده است.
میتوان مهارت های فنی برنامه نویسان را سنجید و البته این کار چندان سخت هم نیست. می توانید به کارهای قبلی، نمونه کد ها و نتایج چالش های برنامه نویسی آنان نگاه کنید و در مورد مهارت های فنی آنها در طول مصاحبه با آنها بحث کنید. از طرف دیگر مهارتهای نرم کمی عمیق تر هستند. اندازه گیری توانایی شخصی آنها برای کار در یک تیم ، مسئولیت پذیری یا یادگیری شخصی دشوار است.
با این حال اینها همه ویژگی هایی هستند که باعث می شوند بین یک برنامه نویس خوب و بد تفاوت ایجاد شود. پس از بررسی و کار با بیش از ۱۰۰۰ برنامه نویس توانستیم ۷ ویژگی را که برنامه نویسان خوب را از بد جدا میکند، جمع آوری کنیم. پس تا انتهای مقاله همراه ما باشید.
یک برنامه نویس خوب به محصول شما اهمیت زیادی می دهد و همیشه دارای نگرشی مثبت است. زمانی که می خواهید محصولی را به بازار عرضه کنید یا ویژگی های خاصی را از یک محصول در موعد مقرر به بازار ارائه دهید ، برنامه نویس خوب کسی است که در اینجا شما را تنها نمیگذارد. یک توسعه دهنده بزرگ متواضع است و همیشه بازخورد های مختلف از کارش را در نظر میگیرد.
به عنوان مشتری ، می توانید با فراهم آوردن پروژه های جالب برای کار روی آنها و تمجید از کاری که یک برنامه نویس برای شما انجام میدهد ، فرهنگ مثبتی را به وجود آورده و به تقویت نگرش مثبت کمک کنید. شرکت های نوپا می توانند با ارائه گزینه هایی مانند سهام ، پرداخت اضافه کاری ، مرخصی و . در این راه به تقویت برنامه نویسان خوب کمک کنند. اگر به دنبال برنامه نویسانی هستید که دارای نگرش مثبت باشند، میتوانید سوالات زیر را در مصاحبه از آنها بپرسید :
مهارت های ارتباطی خوب به طور مستقیم با مهارت های توسعه خوب ارتباط دارد. یک توسعه دهنده بزرگ و خوب قادر است مشکلات را به وضوح درک کند ، آنها را به فرضیه های کوچکتر تجزیه کند و راه حل هایی را به روشی منسجم پیشنهاد کند.
آنها مفاهیم را به سرعت درک می کنند ، یا سوالات صحیحی برای درک آنها می پرسند. توسعه دهندگان خوب معمولاً با چندین زبان به طور منسجم صحبت می کنند و به زبان انگلیسی بسیار مسلط هستند. در دنیای فناوری ، انگلیسی زبان بسیاری از برنامه ها و آموزش هاست.
نحوه آزمایش مهارت ارتباطی :
توسعه دهندگان خوب بسیار قابل اعتماد هستند. آنها یک اخلاق کاری قوی دارند و در جلسات به موقع حاضر می شوند. یک مهارت مهم، توانایی تخمین زمان لازم برای انجام یک کار و تحویل به موقع آن است که خوشبختانه توسعه دهندگان خوب از آن برخوردار هستند. یک برنامه نویس خوب به جای آنکه شما او را مدیریت کنید، به خوبی میتواند بر روی شما تاثیر گذار باشد.
نحوه آزمایش این مهارت:
اگر یک توسعه دهنده دیر در جلسه مصاحبه حاضر میشود، این اولین نکته منفی اوست. می توانید از یک توسعه دهنده بپرسید که از چه ابزار ها و سیستمهایی بطور روزانه برای ارتباط با مشتریان و یا اعضای تیم استفاده می کند.
یک راه خوب برای آزمایش هر توسعه دهنده در مورد این خصوصیت ، ورود به یک قرارداد کوتاه مدت و داشتن یک دوره ارزیابی برای اوست، از این طریق میتوانید به همه چیزی که از او نیاز دارید برسید. نکته اصلی این است که نقاط قوت و ضعف تیم خود را زود تشخیص دهید و تیم را بر اساس عملکرد مورد نظر خود توسعه دهید.
توسعه دهندگان خوب معمولاً در خودآموزی شگفت انگیز هستند. آنها توانایی یادگیری فن آوری های نوین را دارند و توسط فن آوری های جدید مرعوب نمی شوند. هر برنامه نویس موقعیتی را تجربه می کند که جواب آن را نمی داند. برنامه نویسان خوب منابع مختلفی را پیدا می کنند ، با افراد مناسب گفتگو می کنند و مهم نیست با چه مشکلی رو به رو هستند، آنها پاسخ را بدست می آورند. بهترین مهارتی که هرکس میتواند داشته باشد، توانایی یادگیری سریع است.
توسعه دهندگان خوب به اندازه کافی کار کرده اند که متخصص باشند. البته پیدا کردن یک برنامه نویس که روی محصولی مشابه محصول شما کار کرده باشد یا از همان فناوری های مد نظر شما استفاده کند نیز اهمیت دارد. برنامه نویسان مناسب برای پروژه شما آنهایی هستند که درک درست و عمیقی از تکنولوژی دارند.
آنها از استانداردهای کد نویسی پیروی می کنند و کدی را می نویسند که در صورت وم قابل درک و اظهار نظر باشد و می تواند به راحتی به شخص دیگری منتقل شود. آنها با ترکیب توانایی های شناختی و تجربه متنوع صنعت ، می توانند به سرعت به راه حل های بهینه برسند. یک توسعه دهنده خوب علاوه بر مهارت های کد نویسی بر روی معماری های مختلف نیز تسلط دارد.
نکته مثبت توسعه دهندگان خوب ، توانایی آنها برای کمک به سایر توسعه دهندگان برای بهتر شدن است. آنها به هم تیمی خود کمک می کنند و همیشه دوست دارند چیز هایی که یاد گرفته اند را به دیگران یاد دهند. همیشه مستنداتی مینوسیند که نه تنها به هم تیمی های خود کمک میکند بلکه به افراد دیگری که بعد ها ممکن است روی پروژه های آنها کار کنند یاری می رساند.
یک برنامه نویس بد آنچه را که از آنها خواسته می شود انجام می دهد در حالی که یک برنامه نویس خوب به کاربر نهایی نرم افزار فکر می کند و برای حل مشکلات آنها تلاش میکند. همیشه باید سعی کنید برنامه را کاملا مطابق با نیاز های کاربران نهایی توسعه دهید.
در جلسه قبلی آموزش قدم به قدم وردپرس توضیح دادیم که پست تایپ سفارشی وردپرس چیست به چه دردی میخوره؟ حالا یکی از کاربران از ما سوال کردند که:
در پست تایپ نوشته ها قابلیت دسته بندی پست ها هست، یا مثلا در پست تایپ محصولات ووکامرس می توانیم محصولات را دسته بندی کنیم. آیا در پست تایپ های سفارشی هم قابلیت دسته بندی مطالب فراهم هست؟
در پاسخ این دوست عزیز باید گفت: بله اینجا دنیای وردپرس هست و در دنیای وردپرس هیچ کاری نشد نداره تصمیم گرفتیم خدمت شما عزیزان توضیح بدیم که چطور دسته بندی ها را به پست تایپ های سفارشی وردپرس اضافه کنید.
شما در ابتدا باید کد نویسی برای ایجاد پست تایپ سفارشی در وردپرس را در قالب سایتتان اضافه کرده باشید. حالا که اضافه شد باید کد زیر را به args پست تایپ اضافه کنید:
'taxonomies' => array( 'category' ),
یعنی کد نهایی باید به شکل زیر باشد:
/* * Creating a function to create our CPT */ function custom_post_type() { // Set UI labels for Custom Post Type $labels = array( 'name' => _x( 'Movies', 'Post Type General Name', 'twentythirteen' ), 'singular_name' => _x( 'Movie', 'Post Type Singular Name', 'twentythirteen' ), 'menu_name' => __( 'Movies', 'twentythirteen' ), 'parent_item_colon' => __( 'Parent Movie', 'twentythirteen' ), 'all_items' => __( 'All Movies', 'twentythirteen' ), 'view_item' => __( 'View Movie', 'twentythirteen' ), 'add_new_item' => __( 'Add New Movie', 'twentythirteen' ), 'add_new' => __( 'Add New', 'twentythirteen' ), 'edit_item' => __( 'Edit Movie', 'twentythirteen' ), 'update_item' => __( 'Update Movie', 'twentythirteen' ), 'search_items' => __( 'Search Movie', 'twentythirteen' ), 'not_found' => __( 'Not Found', 'twentythirteen' ), 'not_found_in_trash' => __( 'Not found in Trash', 'twentythirteen' ), ); // Set other options for Custom Post Type $args = array( 'label' => __( 'movies', 'twentythirteen' ), 'description' => __( 'Movie news and reviews', 'twentythirteen' ), 'labels' => $labels, // Features this CPT supports in Post Editor 'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ), // You can associate this CPT with a taxonomy or custom taxonomy. 'taxonomies' => array( 'genres' ), /* A hierarchical CPT is like Pages and can have * Parent and child items. A non-hierarchical CPT * is like Posts. */ 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'show_in_nav_menus' => true, 'show_in_admin_bar' => true, 'menu_position' => 5, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', 'taxonomies' => array( 'category' ), ); // Registering your Custom Post Type register_post_type( 'movies', $args ); } /* Hook into the 'init' action so that the function * Containing our post type registration is not * unnecessarily executed. */ add_action( 'init', 'custom_post_type', 0 );
حالا دسته بندی به پست تایپ های شما اضافه شده. بدون دردسر و بدون هیچگونه مشکلی !
منبع: میهن ورد پرس
سلام؛
همانطور که میدانیم یکی از مواردی که میتواند در بهبود سئوی ما تاثیر داشته باشد، ساختار سایت” است. ساختار و معماری یک سایت میتواند در خیلی از بخشهای مختلف سئو تاثیر گذار باشد. زمانی که شما میخواهید ساختار یک سایت را بهبود ببخشید و قبل از طراحی، ساختار آن و روابط بین صفحات را مشخص کنید، می توان گفت این خودش زیربنای سایت شما را تشکیل میدهد و گام اول و مهم ترین گام در امر سئو به حساب می آید.
در سیستم وردپرس نیز دقیقا همین امر باید در نظر گرفته شود. اول از همه باید به نوع قالب و ساختاری که در نظر می گیرید، توجه کنید و سپس از افزونه های سئو و مواردی که باید رعایت شوند، می پردازیم.
در این چند سالی که در حیطه سئو، کار میکنم، پروژههای زیادی را انجام داده ام. همیشه برایم سوال بود که چرا هیچ کدام از وبمسترها و طراحان سایت، دقتی به ساختار سایت” و این که چگونه بخشهای مختلف را باید کنار هم بچینند ندارند. چرا امر به این مهمی را همیشه از دست میدهند؟ در ادامه مواردی را یادآوری میکنم تا شاید شما نیز به بهبود اوضاع ساختاری سایتتان ترغیب شوید.
اگر از رنگ ها، فونتها و بحث گرافیکعبور کنیم؛ طراحی خوب بیشتر به معنای ساختار و چینش” خوب باز میگردد. ذهن انسان به صورت منطقی بخشهای مختلف یک بخش را کنار هم میگذارد و بی درنگ شروع به یافتن چیزی که میخواهد، میکند. معماری خوب، به کاربران این امکان را میدهد تا هرچه سریعتر به چیزی که میخواهند برسند. اگر یک کاربر سریع به محتوایی که در انتظار اوست، برسد، بیشتر در سایت شما میماند و کمتر پیش میآید که بخواهد سایت شما را در بازدید اول ترک کند.
حتما برایتان این سوال پیش آمده است که این لینکها از کجا میآیند؟ گوگل بر اساس چه اطلاعاتی آنها را نمایش میدهد؟ به طور کلی سایتلینکها یکی از مواردی هستند که هر هفته حداقل چند نفر در مورد آنها از من سوال میپرسند. از طرفی میتوانند برای سایت شما بسیار مفید باشند چون کاربران در SERPs (search Engine result page) سریعتر به صفحاتی که میخواهند میرسند. Sitelink ها میتوانند CTR (میزان موفقیت تبلیغات و بازدید یک سایت) سایت شما را افزایش دهند و در صفحه نتایج جستوجو، نتیجه مربوط به سایت شما را متمایز کنند.
حالا چگونه این لینکها در نتایج نمایش داده میشوند؟ بهترین تعریف این است که بگوییم گوگل بر اساس این که ناوبری سایت شما برروی چه صفحاتی بیشتر متمرکز شده، این لینکها را انتخاب میکند. ما نمیتوانیم با پر کردن فرمی به گوگل بگوییم که این صفحات را در این بخش نمایش بده؛ فقط میتوانیم بگوییم که نمیخواهیم این لینکها در Sitelink سایتمان نمایش داده شود. برای این کار میتوانید در وبمسترتو” سایت خودتان، بخش Sitelinks را ببینید.
خزندههای موتورهای جستوجو اطلاعات را از طریق خزش در سایت شما به دست می آورند، هدف آنها این است که بتوانند تمامی سایت شما را ایندکس کنند و در زمانهای مشخص، مجدد بازبینی کنند تا بتوانند بهترین نتایج را به کاربران نمایش دهند. هرچه ساختار سایت شما بهتر باشد، این خزندهها راحتتر میتوانند در سایت شما بچرخند و محتواهای جدید را سریعتر ایندکس کنند. هرچه زیربنای سایت خود را قویتر کنید، قطعا سئوی بهتری خواهید داشت و موفقتر خواهید بود.
طراحی ساختاری یک سایت اصلا کار سختی نیست. صرفا باید بدانید که چه صفحاتی دارید و قرار است چه صفحاتی در چه دسته بندیهایی اضافه کنید. در همه حال حواستان باشد که آیا این مسیری که کاربر باید برای رسیدن به محتوایش طی کند، بهترین حالت آن است؟ آیا نمیشود مسیر کوتاهتری را برایش در نظر گرفت؟!
در وردپرس شما به راحتی می توانید با کمک دسته ها، دسته بندی های اصولی داشته باشید تا زمانی که مطلبی می نویسید و به دسته ی مورد نظر ارجاع می دهید، کاربر با رفتن به یک مسیر کوتاه به نتیجه ی دلخواه برسد. البته به شرطی که دسته های شما از دید کاربر، مشخص باشد و به دنبال مطالب مورد نظر خود، مدت زمانی را در سایت جستجو نکند.
عواملی که باعث کاهش بازدید و رتبه سایت شما می شوند
اگر دارید برای یک سایت نسبتا کوچک برنامه ریزی میکنید، بهتر است که دسته بندیهای کمتری داشته باشید تا مدیریت آنها برایتان راحتتر باشد.
در سیستم مدیریت محتوای وردپرس، امکان ایجاد تعداد زیادی دسته وجود دارد، اما بسیار دقت کنید تا کاربران خود را در دسته های غیر مفید و زیاد، گیج نکنید و سعی شما بر این باشد که با داشتن دسته بندی مطلوب کاربر را به مسیر دلخواه هدایت کنید.
در سادهترین حالت یعنی اگر یک دسته بندی دارید که دارای ۱۴ زیر دسته است و یک دسته بندی دارید که فقط ۳ زیر دسته دارد؛ بهتر است که ببینید آیا این دسته بندی را میتوان به دستههای کوچکتری تقسیم کرد؟
حتما تمرکز ویژه ای بر این مطلب داشته باشید و همین الان دسته بندی های خود را کوتاه تر و به اصطلاح بهینه کنید.
یعنی اگر محتوایی قرار است فقط از یک بخش خاص در دسترس قرار بگیرد، بهتر است پیوند یکتایش هم با همان شروع شود. به طور مثال اگر قرار باشد ما در یک ادمین فروشگاهی ایجاد کنیم، حتما آدرس محصولاتمان با /shop شروع خواهد شد تا راحتتر بتوان تشخیص داد که این صفحه در کدام بخش از سایت قرار گرفته است.
همانطور که میدانیم، اولین چیزی که کاربران (و موتورهای جستوجو) با آن مواجه میشوند، هدر سایت است. قبلا گفته میشد که لینکهایی که در ۵۰۰ پیکسل اول سایت قرار میگیرند اولویت بالاتری برای موتورهای جستوجو دارند؛ پس بیایید لینکهای مهم را در این بخش قرار دهیم. حتیالامکان از متن برای ایجاد Navigation استفاده کنید چون متنها Anchor text (متون قابل کلیک کردن) قویتری هستند و میتوانند از نظر سئو سود بالاتری داشته باشند.
اگر در فوترتان به صفحاتی که در هدر لینک دادید، لینک میدهید؛ بهتر است که دقیقا از همان ترتیب هدر پیروی کند! اضافه کردن و یا حذف کردن لینکها و تغییر ترتیب این لینکها میتواند باعث تخریب تجربه کاربری سایتتان شود.
نیازی نیست که حتما کلی وقت صرف ایجاد لینکهای داخلی خوب کنید، طی روند روزانه تولید محتوای سایتتان میتوانید این لینکها را ایجاد کنید. لینکهای داخلی اهمیت دیگر صفحات را برای موتورهای جستوجو مشخص میکنند؛ همانطور که میدانیم صفحاتی که تعداد لینکهای داخلی بالاتری دارند، شانس بالاتری برای دیده شدن در رتبههای بالاتر در نتایج جستوجو دارند.
یک ساختار خوب” میتواند با خوب فکر کردن، طراحی خوب و برنامه ریزی با دقت بدست بیاید. بهترین زمان برای طراحی ساختار یک سایت، قبل از شروع به کارش است.یعنی دقیقا زمانی که شما یک سیستم وردپرس را نصب کرده و شروع به انتخاب قالب مناسب و یا طراحی قالب برای آن می کنید! البته مثل همیشه، فقط به این نوشته اکتفا نکنید و حتما به دنبال توصیههای دیگر وبلاگنویسان در مورد روشهای بهبود ساختار سایت و سئو برای سایتتان باشید و همیشه ضربالمثل «خشت اول گر نهد معمار کج، تا ثریا میرود دیوار کج» را در ذهنتان داشته باشید.
درباره این سایت