دکمه «ویرایش با Page Builder Sandwich» ظاهر نمیشود
اگر نمیتوانید دکمه «ویرایش با Page Builder Sandwich» را در بخش کاربری سایت خود مشاهده کنید، چند مورد وجود دارد که میتوانید امتحان کنید:
مطمئن شوید نوار مدیریت شما قابل مشاهده است
دکمه ویرایش PB Sandwich در نوار مدیریت بخش کاربری سایت شما در دسترس است. با رفتن به بخش مدیریت و مراجعه به کاربران > شناسنامه شما مطمئن شوید نوار مدیریت قابل مشاهده است و دوباره بررسی کنید که گزینه نمایش نوار ابزار هنگام مشاهده سایت تیک خورده باشد.

مطمئن شوید در یک برگه، نوشته یا نوع پست سفارشی هستید
فقط نوشتهها، برگهها و انواع پست سفارشی در بخش کاربری قابل ویرایش هستند. شما تنها زمانی میتوانید موارد را در بخش کاربری ویرایش کنید که امکان ویرایش آنها را با استفاده از ویرایشگر محتوای وردپرس در بخش مدیریت داشته باشید. سایر بخشهای سایت شما – مانند فهرست نوشتههای وبلاگ در صفحه اصلی، فهرست همه نوشتههای وبلاگ، فهرست دستهبندیها، برگههای ۴۰۴، برگههای جستجو – صفحاتی پویا هستند که توسط وردپرس به همراه قالبی که استفاده میکنید ساخته شدهاند و با PB Sandwich قابل ویرایش نیستند.
یکی از نشانههای قابل ویرایش بودن صفحه وب فعلی این است که بتوانید دکمه «ویرایش نوشته» یا «ویرایش برگه» را در نوار مدیریت خود ببینید.
مطمئن شوید محتوای شما به صورت پویا توسط قالب یا یک افزونه تولید نشده باشد
اگر برگه/نوشته شما به صورت پویا توسط یک قالب یا افزونه ایجاد شده باشد، با Page Builder Sandwich (و به احتمال زیاد در سایر صفحهسازها نیز) قابل ویرایش نخواهد بود. اگر متوجه شدید که ویرایشگر محتوای شما در بخش مدیریت خالی است، اما هنگام مشاهده برگه در فرانتاند پر از محتواست، این نشانه خوبی از پویایی تولید محتوای صفحه شما است.
برای بررسی اینکه آیا برگه شما به صورت پویا تولید شده است یا خیر، سورس صفحه وب خود را مشاهده کنید (راستکلیک کرده و سپس «View Page Source» را انتخاب کنید). عبارت «pbs-main-wrapper» را جستجو کنید؛ اگر این عبارت را در هیچ کجایی پیدا نکردید، برگه شما به صورت پویا تولید شده است.
در اینجا چند نمونه از محتوای تولیدشده به صورت پویا آورده شده است:
- برگه شما از چندین ابزارک تشکیل شده است که با استفاده از بخش سفارشیسازی اضافه/ویرایش میکنید،
- برگه شما از برگههای مختلفی تشکیل شده است که توسط یک قالب «تکصفحهای» کنار هم قرار گرفتهاند (در این حالت همچنان میتوانید صفحات جداگانه را ویرایش کنید، اما برگه ترکیبی قابل ویرایش نیست)، یا
- برگه شما از آخرین نوشتههای وبلاگ تشکیل شده است.
ابتدا سعی کنید مقداری محتوا اضافه کنید
مواردی وجود داشته که در صورت خالی بودن محتوا، قالب اصلاً آن را نمایش نداده و این باعث شده PBS به اشتباه تصور کند برگه غیرقابل ویرایش است. برای بررسی این موضوع، برگه/نوشته خود را در ویرایشگر بخش مدیریت ویرایش کنید، متنی دلخواه در محتوای خود بنویسید (مثلاً «سلام»)، سپس از آنجا روی دکمه «ویرایش با Page Builder Sandwich» کلیک کنید.
با تشکر از Mathias Hellquist بابت این نکته!
مطمئن شوید برگه شما در اختیار صفحهساز دیگری نیست
برخی از صفحهسازها شما را مخیر میکنند که یا از ویرایشگر پیشفرض محتوای وردپرس استفاده کنید، یا از ویرایشگر اختصاصی خودِ صفحهساز. اگر قبلاً برگه خود را با صفحهساز دیگری ویرایش کردهاید، ممکن است آن صفحهساز محتوا را در انحصار خود گرفته باشد و دیگر هوکها/فیلترهای محتوا نتوانند اجرا شوند. به همین دلیل، گاهی اوقات Page Builder Sandwich قادر به تشخیص محل محتوای شما نخواهد بود و دکمه ویرایش را نشان نمیدهد چون چیزی برای ویرایش پیدا نمیکند.
برای رفع این مشکل، کافی است استفاده از آن صفحهساز را برای آن برگه/نوشته خاص غیرفعال کنید و فقط ویرایشگر پیشفرض محتوای وردپرس را به کار ببرید.
مطمئن شوید دسترسیهای ویرایش برگه را دارید
اگر دسترسی لازم برای ویرایش برگه را نداشته باشید، دکمه ویرایش ظاهر نخواهد شد. برای مثال، اگر ویرایشگر یا مشارکتکننده هستید و میتوانید نوشتهها و مقالاتی در سایت بنویسید، این لزوماً به این معنی نیست که میتوانید صفحه اصلی یا صفحه تماس با ما را ویرایش کنید. اگر دکمه «ویرایش نوشته» را در نوار مدیریت میبینید، باید بتوانید آن را با PB Sandwich نیز ویرایش کنید. در صورت نیاز به اختیارات ویرایش، از مدیر سایت خود درخواست کنید.
ممکن است یک خطای جاوا اسکریپت مانع کارکرد PB Sandwich شده باشد
افزونه PB Sandwich بهطور گسترده از جاوا اسکریپت استفاده میکند. اگر خطاهای جاوا اسکریپتی ناشی از سایر اسکریپتهای موجود در سایت وجود داشته باشد، این موضوع ممکن است از کارکرد PB Sandwich جلوگیری کند. برای بررسی این موضوع، میتوانید کنسول توسعهدهنده مرورگر خود را برای یافتن خطاها باز کنید.
برای این کار استفاده از کروم را توصیه میکنم. روی هر قسمتی از صفحه راستکلیک کرده و سپس گزینه «Inspect» را انتخاب کنید. با این کار بخش جدیدی در پایین مرورگر باز میشود، روی تب «console» کلیک کنید. اگر خطایی وجود داشته باشد، با چیزی شبیه به این مواجه میشوید:

اگر خطایی وجود دارد، میتوانید با کلیک کردن یا نگه داشتن ماوس روی نام اسکریپت سرنخی از منبع ایجاد آن به دست آورید:

این خطاها ممکن است از قالب یا سایر افزونههای فعال ناشی شوند. برطرف کردن این خطاها میتواند باعث عملکرد مجدد PB Sandwich شود.
اگر قالب یا یکی از افزونههای شما باعث بروز خطای جاوا اسکریپت شده است، لطفاً از طریق ایمیل به آدرس [email protected] به ما اطلاع دهید و ما تمام تلاش خود را برای رفع مشکل انجام خواهیم داد 🙂
اگر از کلودفلر استفاده میکنید، مطمئن شوید قابلیت Rocket Loader خاموش است
کلودفلر یک CDN و DNS رایگان و بسیار پرکاربرد است. عالی است، اما PBS در حال حاضر با قابلیت Rocket Loader مشکل دارد. قابلیت Rocket Loader زمان بارگذاری فایلهای جاوا اسکریپت را بهبود میبخشد، اما ترتیب وابستگی و فراخوانی اسکریپتهای PBS را به هم میریزد. اگر Rocket Loader روشن باشد، دکمه ویرایش Page Builder Sandwich ظاهر نخواهد شد (و هیچ خطایی نیز در کنسول جاوا اسکریپت نمایش داده نمیشود).
برای بررسی اینکه آیا سایت شما از Rocket Loader کلودفلر استفاده میکند یا خیر، سورس صفحه وب خود را مشاهده کنید (راستکلیک کرده و سپس «View Page Source» را انتخاب کنید) و سپس عبارت «rocketscript» را جستجو کنید؛ اگر این عبارت را پیدا کردید، یعنی Rocket Loader روشن است.

برای دریافت راهنمای کامل نحوه خاموش کردن آن، مقاله سازگاری CloudFlare و Rocket Loader را مطالعه کنید.
همه این کارها را انجام دادم و دکمه ویرایش هنوز وجود ندارد!
بسیار خب، در این مرحله اگر هیچیک از راهحلهای بالا کارساز نبود، وقت آن رسیده است توضیح دهیم چرا نمایش داده نمیشود و در این باره چه کاری باید انجام داد. آمادهاید؟ بزن بریم!
«دلیل» این موضوع (به زبان غیرفنی)
افزونه Page Builder Sandwich باید بداند محتوای برگه/نوشته شما کجا قرار دارد. ما این کار را با شناسایی زمان بارگذاری محتوای نوشته توسط وردپرس و «علامتگذاری» آن ناحیه انجام میدهیم تا پس از بارگذاری کامل بتوانیم محل بخشهای اصلی را پیدا کنیم.
گاهی اوقات، برخی افزونهها این فرآیند را لغو یا دور میزنند و در عوض تلاش میکنند محتوا را به روش خودشان بارگذاری کنند. این کار گاهی مشکلی ایجاد نمیکند، اما در شرایط خاص، بهویژه هنگام بارگذاری محتوای نوشته اصلی، ممکن است موجب اختلال در عملکرد برخی افزونهها شود. وقتی افزونه دیگری این فرآیند بارگذاری را دور میزند، «علامتگذاریهای» انجامشده ممکن است از دست بروند و زمانی که نوبت به فعال شدن ویرایشگر میرسد، دیگر نمیتواند محل محتوای شما را پیدا کند. در نتیجه، دکمه ویرایش ظاهر نمیشود! همچنین ممکن است متوجه شوید برخی افزونههایی که محتوا به برگه اضافه میکنند (مانند افزونههای اشتراکگذاری در شبکههای اجتماعی) دقیقاً به همین دلیل از کار میافتند.
«دلیل» این موضوع (به زبان فنی)
افزونه Page Builder Sandwich نیاز دارد بداند محتوای برگه/نوشته شما کجاست، و این کار را با هوک شدن به فیلتر the_content و افزودن یک پوشش (wrapper) به دور محتوای اصلی انجام میدهد. برخی افزونهها ممکن است این روند را بازنویسی کرده و در ادامه با تابع get_the_content() محتوا را جایگزین کنند. متأسفانه، این کار مانع از فراخوانی تمام فیلترهای the_content میشود و در نتیجه پوشش PBS از بین میرود. هرگونه تغییر افزونههای دیگر نیز به همین ترتیب نادیده گرفته خواهد شد.
استفاده از get_the_content() به خودی خود مشکلی ندارد، اما اگر به جای فراخوانی معمول the_content() که همه فیلترهای the_content در آن اجرا میشوند، در کوئری اصلی و داخل برگه قالب نوشته تکی استفاده شود، میتواند آثار نامطلوبی داشته باشد.
برای رفع این مشکل چه باید کرد
با مشاهده برگه/نوشته خود در بخش کاربری و مشاهده سورس صفحه در حالی که وارد حساب شدهاید، میتوانید بررسی کنید که آیا «علامتگذاریهای» Page Builder Sandwich وجود دارند یا خیر. در میان خطوط کد به دنبال رشته زیر بگردید:
data-name="main-content"
اگر آن را پیدا کردید، پس احتمالاً فقط یک مشکل جاوا اسکریپت در جایی وجود دارد؛ فقط کافی است قالب و افزونههای مورد استفاده خود را به ما اطلاع دهید تا مشکل را برطرف کنیم.
اما اگر آن را پیدا نکردید، احتمالاً قالب شما (یا یک افزونه، اما اگر یک برگه یا نوشته وبلاگ باشد احتمالاً قالب است) تغییراتی روی محتوای نوشته اعمال میکند. اگر چنین است، باید با توسعهدهنده قالب تماس گرفته و مشکل را به آنها اطلاع دهید! همچنین میتوانید توضیح فنی بخش «چرا» در بالا را به آنها نشان دهید، این کار به عیبیابی کمک خواهد کرد 🙂
اگر در دستکاری کدهای PHP مهارت دارید، میتوانید با پیدا کردن فایل قالبی که محتوای نوشته را مدیریت میکند، آن را برطرف کنید. یکی از راهحلهایی که با آن مواجه شدهایم، جایگزینی فراخوانیهای مربوط به:
$content = get_the_content();
با کدهای زیر است:
ob_start(); the_content(); $content = ob_get_clean();<br>
توجه: نام متغیر PHP ممکن است در قالب شما متفاوت باشد، اما ساختار کلی یکسان است. اگر کار کرد، بهتر است به جای اعمال مستقیم این تغییر در قالب اصلی، یک قالب فرزند (child theme) بسازید. همچنین ممکن است این تغییر عوارض جانبی داشته باشد، بنابراین بهتر است در این خصوص با توسعهدهنده قالب خود مشورت کنید.