در این مقاله آموزش قفل و غیرفعال کردن بلوک گوتنبرگ در وردپرس ارائه خواهد شد. ویرایشگر گوتنبرگ، ایجاد محتوا توسط بلوکها را ساده میکند اما گاهی لازم است کنترل بیشتری روی بلوکهای قابل استفاده داشته باشید. شاید در حال کار روی سایت یک مشتری هستید و نمیخواهید از برخی بلوکها استفاده کند یا شاید هم قصد دارید تجربه ویرایش را با حذف گزینههای غیرضروری سادهتر کنید.
در این مقاله، روشهای مختلفی برای غیرفعال کردن بلوک گوتنبرگ بررسی میشود، از جمله:
1. مخفی کردن بلوکها در قسمت درج (inserter) از طریق رابط کاربری وردپرس
2. قفل کردن بلوک گوتنبرگ برای جلوگیری از جابجایی یا حذف
3. اعمال محدودیتهای بلوک با PHP، از جمله دسترسی بر اساس نقش کاربران
تمام روشهای ذکر شده در این مقاله برای غیرفعال کردن بلوکهای گوتنبرگ، بدون نیاز به افزونه هستند و برای هر قالب مبتنی بر بلوک قابل استفاده خواهند بود.
غیرفعال کردن بلوک گوتنبرگ با استفاده از رابط کاربری وردپرس
حذف و غیرفعال کردن بلوک گوتنبرگ غیرضروری، به سادهسازی ویرایش کمک میکند و میتواند عملکرد بخش مدیریت را کمی بهبود بخشد زیرا بلوکهای غیرفعال در حافظه (memory) بارگذاری نمیشوند.
هر کاربر میتواند از منوی "ترجیحات" در ویرایشگر بلوک، اقدام به غیرفعال کردن بلوک گوتنبرگ نماید. برای انجام این کار، کافی است روی منوی تنظیمات سه نقطه ای (⋮) در گوشه بالای سمت چپ کلیک کرده تا بخش "ترجیحات" را مشاهده نمایید. سپس در تب بلوکها، کاربران میتوانند هر بلوک را از حالت انتخاب خارج کنند تا از ابزار "درج کننده بلوک" حذف گردد.
برای مثال، همانطور که در تصویر زیر نشان داده شده است، میتوانید بلوک نقل قول را با برداشتن تیک آن غیرفعال کنید.
تصویر(1)
اگر میخواهید پیشرفته تر عمل کنید، میتوانید یک دسته بلوک کامل را غیرفعال نمایید. به عنوان مثال، توسط برداشتن تیک دسته "متن"، تمامی بلوکهای مرتبط با متن از ابزار "درج کننده بلوک" حذف میشوند و دیگر برای استفاده در دسترس نخواهند بود. این کار میتواند به ساده سازی ویرایشگر کمک کرده و از دسترسی کاربران به بلوکهای غیر ضروری جلوگیری کند.
این روش در ویرایشگر پست و سایت قابل استفاده است. غیرفعال کردن بلوک گوتنبرگ تاثیری بر محتوای موجود ندارد، یعنی هر بلوکی که قبلاً به یک پست یا صفحه اضافه شده باشد، بدون تغییر باقی میماند.
غیرفعال کردن بلوک های گوتنبرگ با استفاده از PHP
دو رویکرد اساسی و کاملاً متفاوت برای مجاز کردن یا جلوگیری از استفاده یک بلوک در وردپرس وجود دارد. با توجه به نیاز خود، میتوانید در دسترس بودن یک بلوک درون "درج کننده بلوک" را انتخاب کنید. هر دو روش را میتوان با استفاده از PHP یا JavaScript پیادهسازی کرد که هرکدام مزایا و معایب خاص خود را دارند. معمولاً به کار گیری PHP در این زمینه سادهتر می باشد، در حالی که JavaScript اغلب کارآمدتر است.
در این مقاله، از PHP در تمام مثالها استفاده می شود.
مجاز کردن استفاده از بلوکها
برای مجاز کردن بلوکهای خاص در "درج کننده بلوک"، از فیلتر زیر استفاده کنید. این کار تضمین میکند که تنها بلوکهای مشخصشده برای همه کاربران در ویرایشگر بلوک وردپرس قابل دسترسی باشند:
تصویر(2)
برای جلوگیری از حذف تغییرات هنگام بروزرسانی قالب، باید این کد را به فایل functions.php قالب Child Theme اضافه کنید. هنگام استفاده از این روش، اطمینان حاصل نمایید که تمام بلوکهای لازم را انتخاب کردهاید. به عنوان مثال، اگر بلوک core/list را مجاز کرده اید، باید core/list-item را نیز وارد کنید تا از بروز خطا جلوگیری شود.
تصویر(3)
فیلتر allowed_block_types_all به توسعهدهندگان این امکان را میدهد که بلوکهای قابل استفاده در ابزار درج وردپرس را کنترل کنند. این فیلتر دو پارامتر میپذیرد:
1- allowed_block_types$ - یک آرایه یا مقدار boolean است که بلوکهای مجاز را تعریف میکند (مقدار پیشفرض: true).
2- block_editor_context$ - اطلاعاتی را در مورد وضعیت فعلی ویرایشگر بلوکها ارائه میدهد، از جمله پستی که در حال ویرایش است.
فعالسازی بلوکهای خاص برای مشارکتکنندگان و نویسندگان
کد زیر بلوکهای موجود را برای کاربرانی که دسترسی به قابلیت publish_pages ندارند (مشارکتکنندگان و نویسندگان) محدود میکند:
تصویر(4)
در مثال بالا، فقط نویسندگان و مشارکتکنندگان میتوانند از بلوکهای پاراگراف، تیتر، تصویر، رویه و فهرست استفاده کنند.
فعالسازی استفاده بلوکها برای انواع خاصی از پستها و کاربران
کد زیر بلوک Shortcode (کد کوتاه) را به منوی "درج کننده بلوک" در هنگام ویرایش برگه اضافه میکند اما برای سایر انواع پستها غیرقابل دسترس می نماید:
تصویر(5)
توجه داشته باشید، از آنجا که مشارکتکنندگان و نویسندگان نمیتوانند برگه ها را ایجاد یا ویرایش کنند، در نتیجه فقط در پستها نمایش داده خواهد شد. سایر کاربران در ویرایشگر بلوک وردپرس فقط شش بلوک را خواهند دید اما مدیران و ویرایشگران به بلوک "کد کوتاه" دسترسی دارند که تنها برای برگه ها فعال است.
تصویر(6)
در مثال بالا، این موضوع روی مشارکتکنندگان و نویسندگان هیچگونه تأثیر خاصی ندارد زیرا به طور پیشفرض آنها نمیتوانند برگه جدید اضافه کنند.
فعالسازی بلوکها بر اساس شناسه پست (Post ID)
در صورتی که بخواهید مجموعهای از بلوکها را تنها برای مطالب خاصی فعال کنید، میتوانید به روش زیر اقدام نمایید:
تصویر(7)
در این مثال، تنها بلوکهای پاراگراف، تیتر و تصویر برای post ID های ۲ و ۳ فعال خواهند بود.
تصویر(8)
این روش برای یک مجموعه کوچک از post ID مناسب است اما اگر با وضعیتی پویا روبرو هستید که در آن صفحات یا مطالب به طور مداوم اضافه میشوند، بهتر است فیلتر کردن بر اساس طبقهبندیها و فیلدهای سفارشی را در نظر بگیرید.
غیرفعال سازی بلوک گوتنبرگ
فعالسازی برخی بلوکها، به طور غیرمستقیم نوعی غیرفعال کردن بلوک های گوتنبرگ است زیرا بلوکهایی که در دسترس نیستند به طور خودکار غیرفعال میشوند اما اگر بخواهید اکثر بلوکها را فعال کنید و فقط چند بلوک خاص را محدود نمایید، میتوانید از رویکرد معکوس استفاده کنید. در مثال زیر، بلوکهای عنوان و رویه دیگر برای هیچ کاربری فعال نخواهند بود.
تصوبر(9)
به طور کلی، این کد ابتدا تمام بلوکهای ثبتشده را شناسایی کرده و سپس بلوکهای عنوان و رویه را حذف میکند.
غیرفعالسازی کامل دستهبندیهای بلوک
اگر بخواهید دستهبندیهای کامل بلوکها مانند ابزارک ها، جاسازی (Embed) یا بلوکهای قالب را حذف کنید، میتوانید از روش زیر استفاده نمایید:
تصویر(10)
این روش دستهبندیهای کامل بلوکها را فیلتر کرده و ویرایشگر بلوک را سادهتر میکند.
تصویر(11)
مسدودسازی یا قفل کردن بلوک گوتنبرگ از طریق رابط کاربری وردپرس
مسدودسازی یک بلوک، از جابجایی یا حذف آن جلوگیری میکند، در حالی که ویرایش محتوا همچنان ممکن است. تمامی کاربران میتوانند با استفاده از گزینه "مسدودسازی" در نوار ابزار بلوک، آن را قفل یا باز کنند. برای مسدودسازی یا باز کردن یک بلوک، روی آیکون سه نقطه (⋮) در نوار ابزار آن کلیک کرده، سپس گزینه "مسدودسازی" را انتخاب کنید.
تصویر(12)
با انتخاب گزینه "همه را قفل نمایید"، به طور خودکار گزینههای "قفل حرکت" و "قفل حذف کردن" نیز فعال میشوند اما این گزینهها میتوانند به طور جداگانه نیز اعمال گردند.
تصویر(13)
نکته مهم این است که حتی وقتی یک بلوک قفل شده باشد، کاربران هنوز میتوانند محتوای آن را ویرایش کرده و استایل بلوک را تغییر دهند، مگر اینکه محدودیتهای بیشتری اعمال شود. جلوگیری از تغییر در استایل، توسط ویژگی "مسدودسازی" امکانپذیر نیست. برای محدود کردن تغییر استایل بلوکها، باید تغییراتی در فایل theme.json ایجاد شود.
مسدودسازی بلوکهای ویرایشگر گوتنبرگ وردپرس با PHP
در حالی که رابط کاربری وردپرس مسدودسازی بلوکها را به صورت پایه فراهم میکند اما این ویژگی محدودیتها را به طور سراسری در سایت اعمال نخواهد کرد. هر کاربری که دسترسی ویرایشگر داشته باشد میتواند بلوک قفلشده را باز کند و این امر امکان تغییر محتوای قفلشده را آسان میسازد. برای قفل دائمی بلوکها، بهترین راهحل استفاده از PHP است.
با استفاده از PHP، میتوانید به طور کامل قابلیت مسدودسازی و باز کردن بلوکها توسط دیگران را غیرفعال کرده و اطمینان حاصل کنید که هیچ کاربری نمیتواند محدودیتها را دور بزند. مسدودسازی بلوکها در سناریوهای مختلف مفید است، مخصوصا زمانی که نیاز به حفظ ساختار محتوا دارید. با اعمال محدودیت روی بلوک ها از طریق PHP، میتوانید:
- با جلوگیری از تغییرات در بلوکهای کلیدی، یکپارچگی طراحی را حفظ نمایید.
- از ویرایش تصادفی که ممکن است موجب اختلال در طراحی شود، جلوگیری کنید.
- فرایند ایجاد محتوا را با کاهش گزینههای غیرضروری ساده نمایید.
- از انسجام در الگوها و قالبها، به ویژه پروژههای مشتریان، اطمینان خاطر داشته باشید.
غیرفعالسازی قابلیت مسدودسازی بلوک برای تمام کاربران
کد PHP زیر قابلیت مسدودسازی بلوکها را به طور کامل غیرفعال میکند و از قفل یا باز کردن بلوکها توسط کاربران دیگر جلوگیری خواهد کرد:
تصویر(14)
با اعمال این کد، ویژگی مسدودسازی بلوک به طور کامل از ویرایشگر بلوک حذف میشود و هیچکس، صرفنظر از نقش، قادر به قفل یا باز کردن قفل بلوکها نخواهد بود.
محدود کردن مسدودسازی بلوکها بر اساس نقشهای کاربری
به جای حذف کامل قابلیت مسدودسازی بلوکها، ممکن است بخواهید نقش های کاربری خاصی قادر به قفل و باز کردن بلوکها باشند. کد PHP زیر تنها به مدیران و ویرایشگران اجازه میدهد تا بلوکها را قفل یا باز کنند اما نویسندگان و مشارکتکنندگان قادر به باز کردن قفل هیچ بلوکی که توسط نقش های مدیر یا ویرایشگر تنظیم شده، نیستند.
تصویر(15)
این روش کنترل بلوکها را به کاربرانی که قابلیت edit_theme_options دارند، محدود میکند و معمولاً شامل مدیران و ویرایشگران میشود. نویسندگان و مشارکتکنندگان قادر نخواهند بود بلوکهایی را که توسط کاربران با سطوح بالاتر تنظیم شده، باز کنند.
دسترسی به ویرایشگر کد نیز غیرفعال شده است تا از تغییرات دستی در بلوکهای قفل شده برای دور زدن محدودیتها جلوگیری شود. این امر تضمین میکند که این بلوکها حتی توسط کاربران دارای دانش کدنویسی، قابل تغییر نباشد. ممکن است از خود بپرسید که آیا علاوه بر PHP و JavaScript، روشهای دیگری برای غیرفعال کردن بلوکها وجود دارد؟
در حال حاضر، فایل theme.json از مسدودسازی، باز کردن یا غیرفعالسازی بلوکها پشتیبانی نمیکند، به این معنی که نمیتوانید از آن برای اعمال محدودیت روی بلوک ها استفاده کنید. در مورد WP-CLI نیز همینطور است. از آنجا که WP-CLI روی دادههای سمت سرور کار میکند، دستورات خاصی برای فعالسازی یا غیرفعالسازی بلوکها ندارد. در حال حاضر، PHP و JavaScript تنها روشهای قابل اعتماد برای مدیریت دسترسی به بلوکهای وردپرس هستند.
جمع بندی
در این مقاله روش های غیرفعال کردن بلوک گوتنبرگ و شخصی سازی آن توضیح داده شد. انتخاب اینکه بلوکها را فعال یا غیرفعال کنید یا ترکیبی از هر دو، بستگی به نیازهای خاص شما دارد. ممکن است بخواهید برای رابط کاربری مرتبتر ویرایشگر، برخی بلوکها را غیرفعال کنید یا دسترسی را بر اساس نقشهای کاربری کنترل نمایید.
با توجه به موارد ذکر شده در مورد نقشهای کاربری، دسترسی ها میتوانند برای سفارشیسازی بیشتر نحوه مدیریت ویرایشگر گوتنبرگ وردپرس تغییر یابند. باید در نظر داشت که وردپرس با گذر زمان تکامل می یابد. بروزرسانیهای آینده ممکن است روشهای جدیدی برای مدیریت بلوکها یا تغییرات در عملکردهای فعلی ارائه دهند. بنابراین، آگاهی از امکانات جدید وردپرس و پیگیری بروزرسانیها، امری ضروری است تا اطمینان حاصل شود که رویکرد شما همچنان کارآمد و موثر باقی میماند.