
به اشتراک بگذارید

به اشتراک بگذارید
آموزش وردپرس | بلاگ وبداده
افزودن iFrame به صفحات وردپرس؛ از بلوک HTML تا شورتکد
add_shortcode در functions.php یک شورتکد امن و قابل استفادهٔ مجدد بسازید.
[iframe src="https://example.com" width="100%" height="450"]. افزونهٔ Advanced iFrame امکانات بیشتری مثل کد امنیتی برای جلوگیری از جاسازی توسط دیگران، استایلدهی و مدیریت خطا دارد و برای موارد حرفهایتر مناسب است.add_shortcode یک شورتکد تعریف میکنیم که آدرس، عرض، ارتفاع و عنوان میگیرد و خروجی را با توابع امنیتی esc_url و esc_attr پاکسازیشده تحویل میدهد. کد زیر را در functions.php قالب فرزند یا افزونهٔ Code Snippets قرار دهید:[webdade_iframe src="..."] را بنویسید تا iframe امن ساخته شود. روشهای امن افزودن این نوع کد را در راهنمای درج کد در برگه و نوشتههای وردپرس کامل توضیح دادهایم.
| روش | نیاز به کد | نیاز به افزونه | مناسبِ چه کسی |
|---|---|---|---|
| بلوک HTML سفارشی | کمی (چسباندن کد) | خیر | مبتدی، جاسازی موردی |
| افزونهٔ iframe / Advanced iFrame | خیر (شورتکد) | بله | کاربرانِ بدون کد، امکانات بیشتر |
| شورتکد سفارشی functions.php | بله (یکبار) | خیر | کاربر حرفهای، استفادهٔ مکرر |
sandbox در تگ iframe به شما اجازه میدهد قابلیتهای محتوای جاسازیشده را محدود کنید؛ مثلاً با مقادیر allow-scripts و allow-same-origin فقط همان چیزهایی را که لازم است فعال میگذارید. این کار احتمال سوءاستفاده از قاب را کاهش میدهد و برای جاسازی از هر منبعی که کامل به آن اطمینان ندارید، توصیه میشود.| مشکل رایج | علت احتمالی | راهحل |
|---|---|---|
| خطای refused to connect | سایت مقصد هدر X-Frame-Options دارد | از سرویسی که «کد جاسازی» رسمی میدهد استفاده کنید |
| iframe بعد از ذخیره حذف شد | کاربر مجوز unfiltered_html ندارد | با کاربر مدیر ذخیره کنید یا از افزونه/شورتکد استفاده کنید |
| ارتفاع ثابت و برش در موبایل | iframe واکنشگرا نیست | قاب را با CSS و aspect-ratio واکنشگرا کنید |
| اسکرول دوگانه و آزاردهنده | محتوای مقصد بلندتر از قاب است | ارتفاع مناسب بگذارید یا اسکرول داخلی را با استایل مدیریت کنید |
برای یک جاسازی موردی، سادهترین راه استفاده از بلوک «HTML سفارشی» (Custom HTML) در ویرایشگر بلوکی است. کافی است بلوک را اضافه کنید، کد iframe سرویس مقصد را داخلش بچسبانید و با دکمهٔ Preview نتیجه را ببینید. برای استفادهٔ مکرر، ساخت شورتکد اختصاصی یا افزونه بهتر است.
معمولترین علت، نداشتن مجوز unfiltered_html است. در نصب تکسایتی فقط مدیر کل میتواند کد iframe را ذخیره کند و در وردپرس چندسایتی تنها Super Admin. اگر با کاربر کمدسترسی وارد شدهاید، وردپرس هنگام ذخیره کد iframe را حذف میکند؛ با کاربر مدیر امتحان کنید یا از افزونه/شورتکد استفاده کنید.
چون آن سایتها با هدرهای امنیتی مانند X-Frame-Options یا Content-Security-Policy عمداً جلوی نمایش خود در iframe را میگیرند. این تصمیم سمت سایت مقصد است و از سمت شما قابل دور زدن نیست. در این حالت باید از «کد جاسازی» رسمی که خود سرویس ارائه میدهد استفاده کنید.
iframe بهصورت پیشفرض ابعاد ثابت دارد. آن را داخل یک div با موقعیت relative و نسبت تصویر مشخص (aspect-ratio) بگذارید و خود iframe را با position:absolute و عرض و ارتفاع ۱۰۰٪ کشیده کنید. نمونهٔ کامل CSS آن را در بخش روش اول همین مقاله آوردهایم.
محتوای داخل iframe به پای سایت شما ایندکس نمیشود، پس نباید متن اصلی و مهم صفحه را داخل iframe بگذارید. با این حال جاسازی معقول ویدیو یا نقشه مشکلی برای سئو ندارد؛ فقط مراقب سرعت باشید، چون iframeهای سنگین میتوانند بارگذاری صفحه را کند کنند.
وردپرس برای بعضی سرویسها مثل یوتیوب و توییتر، جاسازی خودکار (oEmbed) دارد؛ کافی است لینک را بچسبانید. iframe زمانی به کار میآید که سرویس مقصد oEmbed ندارد یا میخواهید یک صفحهٔ دلخواه یا ابزارک خاص را جاسازی کنید که وردپرس آن را بهصورت خودکار نمیشناسد.
بهترین جا، فایل functions.php قالب فرزند یا افزونهٔ Code Snippets است. قراردادن کد در قالب فرزند یا افزونه باعث میشود با بهروزرسانی قالب اصلی، کد شما پاک نشود. مستقیم در functions.php قالب اصلی کد نگذارید، چون با اولین آپدیت قالب از بین میرود.
سه کار اصلی: فقط از منابع مورد اعتماد جاسازی کنید، از ویژگی sandbox برای محدودکردن قابلیتهای محتوای داخل قاب استفاده کنید، و در صورت امکان ویژگی referrerpolicy را تنظیم کنید. اگر افزونه بهکار میبرید، امکاناتی مانند کد امنیتی افزونهٔ Advanced iFrame هم کمککننده است.