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

38

آموزش روش صحیح اضافه کردن فایل های 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 را قرار داده ایم، این کار باعث میشود که وردپرس به صورت اتوماتیک، ورژن فعلی خودش را به انتهای آدرس اسکریپت های مربوطه اضافه کند. به همین سادگی …

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

دسترسی آسان به این مطلب لینک کوتاه :
شاید از اینها هم خوشتان بیاید!
38 دیدگاه
  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

  8. پدرام ملکی می گوید

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

    1. MrCode می گوید

      سلام
      در آموزش به این نکته اشاره کردیم که این فایل ها رو میتونید در فایل functions.php قالبتون به شکل استاندارد آموزش داده شده فراخوانی کنید.

  9. سجاد می گوید

    سلام
    من میخواهم واسه یه قالب خارجی برای پنل تنظیماتش نسخه rtl بزنم
    ولی فایل استایل rtl واسه تنظیمات قالبش نداره
    این مورد رو میتونم طبق روش بالا اسمش رو بسازم و وردپرس اوتوماتیک خودش استایل رو صدا کنه ؟؟
    با تشکر

    1. MrCode می گوید

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

      اطلاعات بیشتر در زمینه راستچین کردن قالب وردپرس رو میتونید در لینک زیر مطالعه کنید :
      https://mrcode.ir/?p=5258

  10. Nazanin می گوید

    سلام ، کاش میگفتین چطوری میشه یک استایل جدید معرفی کرد که در سورس بعد از rtl.css لود بشه . من 999 هم تست کردم جواب نگرفتم!

    1. MrCode می گوید

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

  11. حسین می گوید

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

  12. حمید می گوید

    سلام دوست عزیز من یه مشکلی دارم ممنون میشم کمک کنید بنده سایتی دارم از cms وردپرس استفاده میکنم برای تبلیغات وقتی کد رو قرار میدم درون سورس کد ها طوسی میشه و در خود سایت نمایش داده نمیشه جالبه کد های دیگه ای که از سایت های دیگه میگیرم خیلی خوب تبلیغات نمایش داده میشه ولی این یکی رو که نیاز دارم اجرا نمیشه ممنون میشم راهنمایی کنین

  13. حامد امیدی می گوید

    سلام وقت بخیر. متوجه هستم که برای استفاده از اسکریپتها و …. باید با css و جاوا و html آشنایی داشت منتها
    بنده که این دانش رو ندارم فقط درمورد یک اسلایدر فوتر که سعی دارم در سایتم قرارش بدم نیاز به کمک دارم. ممکنه بفرمایید که فایلهای این اسلایدر رو که از سایت زیر دانلود کردم باید کجای سایت قرار بدم که اسلایدر به خوبی در صفحه اول نمایش داده بشه؟ ممنون میشم.

  14. علی می گوید

    سلام ، تو لود جی کوئری شما گفتید اسمو jquery هست
    خب مسیر به چه صورته
    الان فایل من j.js هست تو پوشه js من تو اون پرانتز باید چی آدرس بدم

    1. MrCode می گوید

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

  15. msprogrammer می گوید

    سلام. من قالبی طراحی کزدم که شاملچند فایل css به شکل زیر هست:

    حالا میخوام با استفاده از wp_enqueue_style تمام این استایل ها رو فراخوانی کنم اما نمیدونم چطور باید مشخص کنم که هر استایل مربوط به موبایل تبلت و مینی تبلت هست و فقط در یک سایز خاص از صفحه نمایش باید لود بشه

    1. MrCode می گوید

      سلام

      استایل هاتون رو باید توی یک فایل یکسان تعریف کنید ولی تو همون فایل css مشخص کنید که هر کدوم واسه چه سایزی از صفحه نمایشه. بخش Media Queries Simple Examples در لینک زیر رو نگاه کنید:
      https://www.w3schools.com/css/css3_mediaqueries.asp

  16. مهدی می گوید

    سلام و درود به شما و آموزش کاربردیتون.
    آیا از این روش رجیستر کردن جاوا در قالب وردپرس، میشه در وب سایتی که با php خام نوشته شده هم استفاده کرد؟
    بهتر مطرح کنم.
    من همیشه توی مرورگر آی ای مشکل لود شدن فایل های جاوایی دارم که به هم دیگه نیازمند هستند.
    یعنی توابعی که توی یک فایل جاوا با اولویت بارگذاری بالاتر هست در فایل جاوای بعدیش شناسایی نمیشن.
    توی مرورگرهای مدرن مشکلی ندارم فقط توی IE لعنتی که کاش خدا از رو زمین برش میداشت

    1. MrCode می گوید

      سلام

      روش شرح داده شد در این آموزش فقط در وردپرس قابل استفاده ست چون در اون از توابعی استفاده شده که فقط در وردپرس در دسترس هستند.

  17. یاهو می گوید

    با سلام و خسته نباشید
    من کد زیر رو توی فایل فانکشن زدم. ولی کار نمیکنه!!!

    لطفا راهنمایی بفرمایید.

    اگه ممکنه، نحوه لود شدن فایل استایل کامنت ها رو فقط در بخش کامنت ها هم توضیح بدید.

    ممنونم

  18. مهسا می گوید

    سلام سوال من این است که ایا در سایت وردپرسی میتونیم از تغییر کدهای js و css تغییرات ایجاد کنیم؟ اگر پاسخ بله هست چطور باید به این فایل های صفحاتم دست پیدا کنم از چه طریقی؟

ارسال پاسخ

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