حل مشکل پست سنجاق شده در وردپرس

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

 سنجاق کردن یک پست
سنجاق کردن یک پست

هر سایت می تونه هر  تعداد پپست سنجاق شده داشته باشه اما اگر تعدادشون زیاد بشه خوب فلسفه وجودیش رو زیر سوال می بره. برای این کار میشه  افزونه WP-Sticky  هم استفاده کرد که از اونجایی که اعتقادی به نصب افزونه برای هر کار جزئی ندارم ، پس نصبش نکردم اما اگه شما نصب کردید و تجربه ایی در این زمینه دارید می تونید تجربه خودتون رو با من و خوانندگان این وب سایت به اشتراک بزارید.

خب اینجا یه مشکلی پیش میاد و  البته خود وردپرس هم چاره ایی براش نیاندیشیده (!!!؟). مشکل توی پوسته های معمولی که پست ها به صورت ردیفی ایجاد میشن  نمایش داده نمیشه، بلکه زمانی که شما از پوسته های وردپرسی که به صورت کاشی های ۳ تایی و ۴ تایی و یا همون tile  استفاده می کنن ، اثن پست سنجاق شده در صفحه اول باعث بروز مشکل میشه؛ به این صورت که شکل نمایش پست ها در وب سایت شما ۲×۳  هست یعنی ۲ ردیف ۳ تایی و تعداد پست ها در صفحه ۶ عدد تنظیم شده؛ اما با وجود پست سنجاق شده، یک پست به ۶ عدد مورد مثال اضافه شده و در نتیجه یک ردیف دیگر به پست ها اضافه میشه که ۱ پست داره. به طور موقت شما می تونید تعداد پست ها رو کم کنید و با تنظیم تعداد پست های وردپرس روی ۵ مشکل نمایش صفحه اول درست کنید اما در صفحه دوم، صفحه سوم و تا آخر تمام صفحات که دیگه پست سنجاق شده نمایش داده نمیشه، پست های ۵ تایی نمایش داده میشن که نتیجه می گیریم مشکل هنوز پابرجاست.

مشکل پست سنجاق شده
مشکل پست سنجاق شده

 

راه حل  …!!!؟

به غیر از بی خیال شدن امکان تعیین پست های سنجاق شده و پاک کردن صورت مسئله ( البته  این راه حل، یعضی وقتا بهترین گزینه هست …!)، یه راه حل دیگه هم هست.

 

ما میایم تعداد پست هایی که در قسمت تنظیمات وردپرس / خواندن  تعریف شدن رو پیدا می کنیم و سپس در صفحه اول تعداد پست های سنجاق شده رو ازش کم می کنیم مثلا در مثال بالا ما ۶ تا پست تعریف شده در قسمت خواندن .  ۱ پست استیکی داریم پس اگه در پست اول ۵ تا پست  معمولی نمایش داده بشه و در بقیه صفحات همون ۶ پست نمایش داده بشه مشکل حل میشه … با این توضیحات یاد یک شعر در کتاب دبیرستان خودمون افتادم که می گفت :

از کرامات شیخ ما این است —  شکر را خورد و گفت شیرین است

( اندر حکایت تعریف مشکل ما )

برای پیدا کردن تعداد پست های تنظیم شده در قسمت تنظیمات / خواندن از این قطعه کد استفاده می کنیم :

 

 

برای پیدا کردن تعدا پست های sticky هم این کد رو داریم :

 

خب حالا کافیه که به وردپرس عزیز بگیم که توی صفحه اول، از تعداد پست های پیش فرض ، تعداد پست های چسبونکی (!) رو کم کنه و. بقیه رو نمایش بده و
در سایر صفحات همون تعداد پیش فرض رو زحمتش رو بکشه …
یا به عبارت ساده تر ….

و در پایان این قطعه کد …

حالا باید به وردپرس بفهمونیم که تعداد پست ها رو به جای مقدار پییش فرض از روی متغیر n_posts$ بخونه . برای همین قبل از عبارت در صفحه ایندکس در فایل index.php

این عبارت رو قرار می دهیم و فایل رو ذخیره و به روزرسانی می کنیم …

و در اخر کد شبیه این خواهیم داشت ..

-