آموزش روش صحیح اضافه کردن فایل های css و js به قالب وردپرس

21
آموزش روش صحیح اضافه کردن فایل های css و js به قالب وردپرس Reviewed by MrCode Rating: 5 out of 5 stars شیوه صحیح افزودن فایل استایل به قالب وردپرس - روش صحیح اضافه کردن جاوااسکریپت به وردپرس - چگونه فایل استایل را به پوسته وردپرس پیوست کنیم - فایل css و js شیوه صحیح افزودن فایل استایل به قالب وردپرس - روش صحیح اضافه کردن جاوااسکریپت به وردپرس - چگونه فایل استایل را به پوسته وردپرس پیوست کنیم - فایل css و js

آموزش روش صحیح اضافه کردن فایل های css و js به قالب وردپرس

وقتی در حال طراحی یک قالب برای سیستم مدیریت محتوای وردپرس هستید و یا اینکه میخواهید یک قالب HTML را به یک قالب وردپرسی تبدیل کنید، شاید برایتان این سوال پیش بیاید که شیوه ی صحیح اضافه کردن استایل ها و فایل های جاوااسکریپت به قالب وردپرس دقیقا به چه صورت است و از چه طریقی باید این کار را انجام دهید. قبلا در آموزش تبدیل قالب html به وردپرس، مختصرا در رابطه با روش صحیح اضافه کردن فایل های css و js به قالب وردپرس صحبت کرده بودیم. در آموزش امروز کمی گسترده تر به این مبحث میپدازیم. با مسترکد همراه شوید تا آموزش امروز را به همراه هم پی بگیریم.

به طور معمول چه کار میکنیم؟

البته بدون شک خودتان استاد هستید ولی اجازه بدهید یک بار هم با هم مرور کنیم که به طور معمول به چه شکل یک فایل استایل یا یک فایل جاوا اسکریپت را به یک قالب ساده و استاندارد HTML اضافه میکنیم. برای قرار دادن یک فایل استایل در صفحه ی مربوطه از کد زیر استفاده میکنیم :

البته تگ link میتواند خصوصیت های دیگری هم داشته باشد که در اینجا به آن نمیپردازیم.
و وقتی میخواهیم یک فایل جاوااسکریپت را به قالب مورد نظر اضافه کنیم از کدی مشابه کد زیر بهره میگیریم :

این روش یک روش استاندارد است و مادامی که پای قالب های وردپرس در میان نباشد، استفاده از آن بر اساس استاندارد ها هیچ ایرادی ندارد. ولی وقتی پای وردپرس به میان می آید، برای اضافه کردن فایل های استایل و جاوااسکریپت استانداردهایی وضع شده که بهتر است آنها را رعایت کنید. این مسئله به این مفهوم نیست که اگر در قالب های وردپرس هم برای اضافه کردن فایل های مربوطه از روش فوق استفاده کنید، قالب شما کار نخواهد کرد بلکه به این مفهوم است که این روش در طراحی قالب های وردپرس استاندارد نیست و ممکن است بعدا در استفاده از برخی ویژگی های وردپرس مثل استفاده از child theme ها و … شما را دچار مشکل کند. بنابراین در این شرایط توصیه میشود که حتما از شیوه ی استانداردی که برای این کار در نظر گرفته شده استفاده کنید.

پیوست صحیح فایل های استایل و جاوااسکریپت در وردپرس

در وردپرس برای پیوست استایل ها و جاوااسکریپت دو تابع با نام های wp_enqueue_style و wp_enqueue_script در اختیار ما قرار گرفته که کارشان پبوست صحیح فایلهای مربوطه در قالب و همچنین تعیین ورژن، نوبت افزوده شدن و … آنها در قالب است. اگر در رابطه با نحوه ی استفاده از این دو تابع سری به راهنمای توسعه دهندگان وردپرس بزنید، ممکن است در ابتدا از دیدن توضیحات و نحوه ی استفاده این دو تابع کمی گیج شوید ولی واقعیت این است که استفاده از این دو تابع بسیار آسان بوده و اصلا شما را دچار دردسر نخواهد کرد.

تابع wp_enqueue_style

اجازه بدهید ابتدا نگاهی به توضیحات عمومی این تابع داشته باشیم :

پس اگر بخواهیم در حالتی ساده و در عین حال قابل درک، یک فایل استایل مثل style.css را که در فولدر اصلی قالب قرار گرفته، در قالب فراخوانی کنیم به شکل زیر عمل میکنیم :

در کد بالا اولین مقدار استفاده شده mainstyle است که نام استایل ماست. (و میتواند هر چیز منحصر به فرد و معتبر دیگری باشد. الزامی نیست که شما نام استایل خود را mainstyle بگذارید)
در ادامه برای مقدار بعدی از get_template_directory_uri().’/style.css’ استفاده کرده ایم که فایل style.css را از فولدر اصلی قالبمان قراخوانی میکند. طبعا اگر فایل استایل در زیر فولدر دیگری در فولدر قالب قرار گرفته بود و یا نام دیگری داشت، به سادگی با اضافه کردن مسیر فولدر و نام استایل بجای عبارت /style.css میتوانستیم کد را به دلخواه خود تغییر داده و به نتیجه ی دلخواه دست پیدا کنیم.
سپس با استفاده از array() اعلام کرده ایم که این فایل، به فایل دیگری وابستگی ندارد.
در آخر هم ورژن فایل را مشخص کرده ایم.

تابع wp_enqueue_script

در رابطه با ورودی های این تابع در سایت رسمی وردپرس (کم و بیش) توضیحات زیر ارائه شده :

با توضیحات فوق و توضیحاتی که برای تابع wp_enqueue_style به شما ارائه کردیم، حتما حالا میتوانید کارکرد کد زیر را که برای فراخوانی یک فایل جاوااسکریپت به کار رفته، به خوبی درک کنید :

کد ها را در کجا قرار دهیم؟ آیا استفاده از کد های فوق کافی است؟

این کد ها را میتوانید در فایل functions.php قالبتان قرار دهید. و در جواب سوال دوم. نه استفاده از کدهای فوق کافی نیست. کد هایی که برای افزودن استایل و اسکریپت به قالبتان اضافه میکنید را باید درون یک تابع قرار داده و سپس با استفاده از تابع add_action به وردپرس اعلام کنید که میخواهید تابع مورد نظر در چه زمانی اجرا شود. به مثال زیر توجه کنید :

یک ترفند …

شاید این مسئله خیلی واضح باشد که شما در اینجا میتوانید برای اضافه شدن هر استایل یا اسکریپت به قالب شرطی تعیین کنید. مثلا شاید برای قالبتان پنل مدیریت طراحی کرده باشید. در چنین حالتی میتوانید بر اساس انتخاب کاربر و بر اساس رنگی که توسط وی در پنل مدیریت تنظیم شده، استایل ویژه ای را به قالب اضافه کنید. یا مثلا اگر از بوت استرپ در قالب استفاده کرده اید، میتوانید چک کنید که اگر وضعیت نمایش قالب به حالت rtl است، نسخه ی rtl استایل های بوت استرپ شما در قالب بارگذاری شود و …

فایل rtl.css را چکار کنیم؟

این فایل، گونه ای کاملا بی آزار از فایل های CSS است که لازم نیست کاری با آن داشته باشید! اما جداً، از شوخی که بگذریم، وقتی قالبی را فارسی سازی میکنید و برای آن استایل rtl جداگانه ای را در فایل rtl.css قرار میدهید، لازم نیست که این استایل را به روش های ذکر شده در بالا به قالب اضافه کنید. چرا که وردپرس بر اساس جهت زبان انتخابی، خودش به صورت اتوماتیک در صورت نیاز فایل rtl.css را صدا کرده و به قالب اضافه میکند. پس نگران این فایل نباشید.

و جی کوئری چطور؟

وقتی در قالبی به جی کوئری نیاز داریم و میخواهیم محل فراخوانی جی کوئری را نیز تحت کنترل داشته باشیم تا اطمینان حاصل کنیم که تمامی اسکریپت هایی که به جی کوئری نیاز دارند، پس از بارگذاری جی کوئری، لود خواهند شد، جی کوئری را به شکل زیر در قالبمان فراخوانی میکنیم :

همانطور که مشاهده میکنید فقط به نام جی کوئری اشاره کرده ایم. چرا که وردپرس خودش این فایل را در اختیار دارد و میداند که آن را از کجا بارگذاری کند. در اینجا باید خیلی حواستان باشد که به طور اتفاقی نسخه ای از جی کوئری را به صورت جداگانه بارگذاری نکنید و تنها به استفاده از کد بالا اکتفا کنید. در غیر این صورت با لود کردن چند نسخه از جی کوئری، در قالب شما تداخل ایجاد خواهد شد و شما قادر به استفاده ی صحیح ای جی کوئری نخواهید بود.

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

همانطور که مشاهده میکنید با درج عبارت array(‘jquery’) مشخص کرده ایم که اسکریپت های ما به اسکریپتی که نامش jquery است وابستگی دارند. بنابراین در اینجا وردپرس اطمینان حاصل میکند که ابتدا اسکریپت اصلی و سپس اسکریپت های وابسته را بارگذاری نماید. راستی، همانطور که میبینید در اینجا ورژنی برای اسکریپت هایمان تعیین نکرده ایم و بجای ورژن عبارت false را قرار داده ایم، این کار باعث میشود که وردپرس به صورت اتوماتیک، ورژن فعلی خودش را به انتهای آدرس اسکریپت های مربوطه اضافه کند. به همین سادگی …

امیدواریم که آموزش امروز شما را یک قدم به طراحی قالب هایی استاندارد تر و قدرتمند تر نزدیک کرده باشد …

دسترسی آسان به این مطلب لینک کوتاه :
QR Code For:  آموزش روش صحیح اضافه کردن فایل های css و js به قالب وردپرس

شاید از اینها هم خوشتان بیاید!

21 دیدگاه

  1. پوریا می گوید

    سلام خداقوت
    من میخوام کد ریکچا فارسی باشه و برای همین این دستور رو توی قالب فرزند تو فایل فانکشن میذارم ولی اعمال نمیشه، اصلا نمیخونه فکر کنم میدونید علت چیه؟ ممنون
    function mrcodeirwp_scripts() {
    wp_enqueue_script('jsname', get_template_directory_uri().'https://www.google.com/recaptcha/api.js?hl=fa', array(), '2.0', false );
    }
    add_action( 'wp_enqueue_scripts', 'mrcodeirwp_scripts' );

    1. MrCode می گوید

      سلام
      نحوه ی آدرس دهیتون اشتباهه. فایل اسکریپت رو وقتی اینجوری فراخوانی میکنیم منظورمون اینه که فایلمون یک جایی در فولدر قالبه. (تابع get_template_directory_uri میاد uri فولدر قالب رو در آدرس قرار میده). شما اینجا اومدید URL کامل قرار دادید. در حالی که برای استفاده در این حالت باید فایل جاوااسکریپتتون یک جایی در فولدر قالب باشه. بنابراین این آدرس دهی اشتباه میشه و چیزی هم فراخوانی نمیشه.

      1. پوریا می گوید

        ممنون از پاسختون
        امکانش هست راهنمایی کنید که چطوری میتونم کد درست رو بنویسم؟
        من میخواستم ادرس زیر رو توی قالب فراخوانی کنم
        https://www.google.com/recaptcha/api.js?hl=fa
        تا ریکپچا گوگل به زبان فارسی در بیاد
        ممنون

      2. MrCode می گوید

        این رو تست کنید :


        wp_enqueue_script ( 'recaptcha_api', 'https://www.google.com/recaptcha/api.js?hl=fa' );

        روی لوکال من تست کردم مشکلی نبود. فایل به درستی در head قالب فراخوانی شد.
        البته من فقط بخشی که مربوط به فرخوانی آدرس بود رو اینجا نوشتم. فراموش نکنید که مثل کدی که خودتون قبلا نوشته بودید، توی تابع صحیح قرارش بدید.

  2. پوریا می گوید

    ممنون تست کردم به همون روش صحیح و حتی عادی و در هدر سایت لود میشد ولی دیگه بعدش کد امنیتی گوگل لود نمیشد
    من از فرم گراویتی استفاده میکنم بعدش این فرم گوگل ریکپچا انگلیسی میاره
    میخواستم خودم تو هدر ریکپچا فارسی رو لود کنم که شاید ریکپچا این فرم هم فارسی شه که نشد
    حتی شما هم تو قسمت تماس با ما ریکپچا انگلیسی دارید
    اگر بخوایید خودتون فارسیش کنید چی کار میکنید؟ ممنون

    1. MrCode می گوید

      من راستش خودم تاکیدی روی فارسی کردن چیزی ندارم و البته فکر میکنم این ریکپچای جدید i am not a robot استفاده ازش خیلی آسونه چون فقط یک تیک داره.

      ولی خوب زبان ریکپچا رو با تنظیم یک فیلتر در گرویتی فرمز میتونید عوض کنید. توی راهنمای خودشون یک صفحه در این رابطه موجوده :
      https://www.gravityhelp.com/documentation/article/gform_recaptcha_language/

      البته طبعا چون تست نکردم نمیدونم چطور جواب میده.

  3. دانلودنما می گوید

    ممنون از مطالب مفیدتون

  4. محمد رحمتی می گوید

    درود
    آیا می شود که خاصیت all و screen را باهم استفاده کرد؟
    سپاس

    1. محمد رحمتی می گوید

      شرمنده منظورم را بد رساندم مشکلم را حل کردم

  5. پوریا آریافر می گوید

    سلام
    امکانش بگید از چه پلاگینی "برای دسترسی آسان به این مطلب" استفاده میکنید؟

    1. MrCode می گوید

      سلام
      از افزونه ای در این زمینه استفاده نمیکنیم. آموزش درج کد QR در لینک زیر قابل مشاهده هست :
      https://mrcode.ir/?p=1374

      و آموزش درج لینک کوتاه هم در آدرس زیر :
      https://codex.wordpress.org/Function_Reference/wp_get_shortlink

  6. جوادسوری می گوید

    با سلام واحترام
    از راهنمائی های بسیار خوبتون تشکر میکنم
    من مراحل فوق را طی کردم ولی تابع add_action را نمیشناسد وپیغام زیر صادر میشود:
    Fatal error: Uncaught Error: Call to undefined function add_action() in C:\xampp\htdocs\my_gallery\wordpress\wp-includes\functions.php:5653 Stack trace: #0 {main} thrown in C:\xampp\htdocs\my_gallery\wordpress\wp-includes\functions.php on line 5653
    شاید مفید باشد اعلام کنم که از پی اچ پی نسخه 7 استفاده میکنم.
    باتشکر،درصورت امکان ازراهنمائی شما بهره مند شوم.
    پیروزباشید

    1. MrCode می گوید

      سلام
      از لطف شما ممنونم.
      مشکلتون ارتباطی به ورژن php نداره. برای پیدا کردن مشکل نیاز به بررسی کامل فایل functions.php تون هست که متاسفانه میسر نیست. اما یک نکته ای که من دیدم مشکل بعضی هارو در این زمینه حل کرده بود، (و البته عجیب هم بود) غیر فعال کردن allow_url_fopen روی php بود. این رو میتونید تست کنید شاید نتیجه بگیرید. اما سر زدن به نتایج جستجو در این زمینه در گوگل هم میتونه به شما کمک کنه که دلیل بروز این مشکل رو پیدا کنید :

      https://www.google.com/search?q=Fatal+error%3A+Uncaught+Error%3A+Call+to+undefined+function+add_action&oq=Fatal+error%3A+Uncaught+Error%3A+Call+to+undefined+function+add_action&aqs=chrome..69i57.3263474j0j1&sourceid=chrome&ie=UTF-8#q=call+to+undefined+function+add_action+in+wordpress&*

      1. جوادسوری می گوید

        با تشکر از پاسخ شما
        پیشنهاد تست شد نتیجه نداد.
        نتایج جستجو هم مفید واقع نشده اند ازجمله افزودن عبارت:
        function mysql_escape_string($string){return mysqli_escape_string($string);} به ابتدای فایل فانکشن یا
        افزودن require('C:\xampp\htdocs\my_gallery\wordpress\wp-load.php'); و …
        موفق باشید.

      2. MrCode می گوید

        فکر کنم متوجه شدم مشکلتون کجاست.
        محل اتفاق افتادن خطا در خطایی که پیست کردید اینجاست :
        my_gallery\wordpress\wp-includes\functions.php
        این یعنی شما دارید کدها رو در مسیری کاملا اشتباه قرار میدید.
        محل قرار گیری کدها در فایل functions.php قالب شماست و نه در فولدر wp-includes وردپرس. بنابراین باید فایل functions.php رو در فولدر قالبتون باز کنید و کدهای مربوطه رو در اونجا قرار بدید.

  7. متین می گوید

    سلام
    یه سوال داشتم
    من میخوام به فایل های css افزونه خودم یه فایل بوت استرپ اضافه کنم
    کدی که اضافه میکنم به این صورت هستش :

    اما بهم ایراد میگیره و میگه :
    Warning: Missing argument 2 for add_action(), called in

    1. MrCode می گوید

      سلام
      از add_action درست استفاده نکردید و یکی از آرگومان های مورد نیازش رو بهش پاس ندادید. مثالهای موجود در آموزش رو مشاهده کنید متوجه منظور بنده خواهید شد.

      1. متین می گوید

        اخه من فقط فایل css دارم!!
        جاوا اسکریپت نمیخوام اد کنم!!
        توروخدا بیشتر توضیح بدین

      2. MrCode می گوید

        این مسئله ارتباطی به اینکه جاوااسکریپت میخواید یا css نداره. سینتکس استفاده از add_action برای اضافه کردن فایل های css و js به همین صورت هست و باید هردو آرگومان رو بهش پاس بدید.

      3. متین می گوید

        با این روش میتونم به افزونه هم css اضافه کنم؟

      4. MrCode می گوید

        بسته به اینکه ریسورسی که میخواید اضافه کنید مربوط به سمت کاربری هست یا ناحیه ادمین، این مسئله ممکنه متفاوت باشه. سری به لینک زیر بزنید :
        http://stackoverflow.com/questions/3760222/how-to-include-css-and-jquery-in-my-wordpress-plugin

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.