افزونهی محتوای جعلی فارسی برای وردپرس
هر کسی که قالب یا افزونهی وردپرس ساخته باشد میداند یک سایت خالی چیز زیادی نشان نمیدهد. تا وقتی آرشیو چند صفحه نداشته باشد، تیترها کوتاه و بلند نباشند، پستها تصویر و برچسب و دیدگاه نداشته باشند، نمیشود فهمید طراحی واقعاً درست کار میکند یا نه. برای سایتهای انگلیسی ابزارهای زیادی هست که این محتوا را بسازند، ولی متن لاتین در قالبی راستبهچپ همهچیز را به هم میریزد: جهت متن، فونت، طول کلمهها. «محتوای جعلی فارسی» را ساختم تا همین کار را با متن فارسی انجام دهد.
نصب: صفحهی افزونه در مخزن وردپرس · کد: گیتهاب
چه کار میکند
- پست، برگه و پستتایپ سفارشی: هر نوع محتوایی که در سایت تعریف شده باشد را میشود با متن فارسی پر کرد؛ با وضعیت منتشرشده، پیشنویس، در انتظار بازبینی یا خصوصی.
- متنی که شبیه فارسی واقعی است: جملهها از واژههای پرکاربرد فارسی ساخته میشوند و علائم نگارشی فارسی (، . ؟) دارند. بدنهی هر پست هم فقط پاراگراف نیست: بین پاراگرافها تیتر، فهرست و نقلقول میآید تا استایل همهی اینها را ببینید. محتوا میتواند بلوکی (برای ویرایشگر گوتنبرگ) یا HTML کلاسیک باشد.
- همهی جزئیات یک سایت واقعی: نویسنده و دستهبندی مشخص یا تصادفی، برچسبها و دیدگاههای فارسی با نامهای فارسی، و تاریخ انتشاری که در چند روز یا چند ماه گذشته پخش شده تا آرشیو ماهانه هم معنی داشته باشد.
- تصویر شاخص: یا یک تصویر سادهی رنگی که همانجا روی سرور ساخته میشود (بدون هیچ درخواست بیرونی)، یا یک عکس تصادفی از سرویس picsum.photos.
- محصولات ووکامرس: اگر ووکامرس فعال باشد، محصول هم میسازد؛ با قیمت به تومان، گاهی تخفیف، SKU، موجودی انبار، دستهبندی و برچسب محصول، و نقد و بررسی با امتیاز ستارهای.
- بلوک «Persian Lorem» در ویرایشگر: وقتی فقط چند پاراگراف متن فارسی لازم دارید، این بلوک را اضافه کنید (یا تایپ کنید
/لورم)، تعداد پاراگراف را انتخاب کنید و متن درج میشود. بلوک بعد از درج خودش را به پاراگرافهای معمولی تبدیل میکند، پس هیچ ردی از افزونه در محتوای پست نمیماند. - ساخت انبوه با نوار پیشرفت: از منوی «ابزارها» تا ۵۰۰ مورد در هر بار، با نوار پیشرفت و دکمهی توقف. تنظیمات آخرین اجرا هم به خاطر سپرده میشود.
- فرمانهای WP-CLI: برای تعداد بیشتر یا اسکریپتنویسی، همهی گزینهها از خط فرمان هم در دسترساند:
wp persian-fake generate --count=50 --category=random --tags=3 --comments=5 --image=placeholder --days=90
wp persian-fake list
wp persian-fake purge --yes
- پاک کردن یکجا: هر چیزی که افزونه ساخته، از پست و محصول تا تصویر و دیدگاه و برچسب، با یک دکمه پاک میشود و به محتوای واقعی سایت دست نمیزند.
- امتحان بدون نصب: از صفحهی افزونه در مخزن وردپرس میشود آن را در WordPress Playground اجرا کرد؛ یک وردپرس کامل داخل مرورگر که از قبل با چند پست نمونه پر شده است.
چرا ساختمش
نسخهی اول را سال ۱۳۹۹ برای کار خودم نوشتم: موقع ساختن قالبهای فارسی، هر بار باید چند ده پست را دستی میساختم یا متن لورم ایپسوم انگلیسی را تحمل میکردم که هیچ شباهتی به ظاهر نهایی سایت نداشت. بعد آن را در مخزن وردپرس منتشر کردم تا بقیهی توسعهدهندههای فارسیزبان هم استفاده کنند. نسخهی ۲ بازنویسی کامل همان ایده است: نسخهی قبلی برای خواندن واژهها به افزونهی SQLite در PHP نیاز داشت و پستهایی میساخت که فقط چند پاراگراف ساده بودند، بدون برچسب و دیدگاه. میخواستم ابزاری باشد که بدون دردسر روی هر هاستی نصب شود و محتوایی بسازد که تا حد ممکن به یک سایت واقعی شبیه باشد.
چطور ساختمش
افزونه با PHP و به سبک کلاسمحور نوشته شده و صفحهی مدیریت و بلوک ویرایشگر با React و کامپوننتهای خود وردپرس ساخته شدهاند.
- فهرست واژه بهجای دیتابیس: واژهها در یک فایل PHP، به ترتیب پرکاربردترین، نگه داشته میشوند؛ دیگر به SQLite نیازی نیست. حدود یکسوم واژهها از سیصد واژهی پرکاربرد اول انتخاب میشوند و بقیه از کل فهرست، تا متن هم روان به نظر برسد و هم تکراری نشود. با فیلتر
gfpc_wordsمیشود فهرست واژهها را عوض کرد یا گسترش داد. - ساخت مرحلهای از طریق REST API: صفحهی مدیریت بهجای یک درخواست بزرگ، محتوا را در دستههای پنجتایی از REST API افزونه میسازد و بعد از هر دسته نوار پیشرفت را جلو میبرد. حذف هم دستهای انجام میشود؛ برای همین هیچکدام در سایتهای بزرگ به محدودیت زمان اجرای PHP نمیخورند و هر وقت بخواهید میشود متوقفشان کرد.
- علامتگذاری همهچیز: هر پست، تصویر و برچسبی که افزونه میسازد یک متادیتای مخصوص میگیرد. حذف یکجا فقط سراغ همینها میرود، و چون همان علامت نسخههای قبلی حفظ شده، محتوای ساختهشده با نسخهی ۱ هم پیدا و پاک میشود.
- تصویر بدون اینترنت: تصویر شاخص ساده با کتابخانهی GD روی خود سرور کشیده میشود: یک گرادیان با رنگ تصادفی در اندازهی ۱۲۰۰ در ۶۲۸. برای همین روی سرورهایی که به اینترنت بیرون دسترسی ندارند هم کار میکند.
- کیفیت و انتشار خودکار: کد با استانداردهای کدنویسی وردپرس (PHPCS) در GitHub Actions بررسی میشود، و با هر انتشار نسخه در گیتهاب، افزونه خودکار ساخته و در مخزن وردپرس منتشر میشود.
اگر پیشنهادی برای بهتر شدن افزونه دارید یا ایرادی در آن دیدید، با من در تماس باشید.
Member discussion