پاسخ به : انتخاب اتوماتیک شهرستان بر اساس استان

سایت Gravity Forms فارسی انجمن‌ها پرسش و پاسخ انتخاب اتوماتیک شهرستان بر اساس استان پاسخ به : انتخاب اتوماتیک شهرستان بر اساس استان

morteza_rahmani در: سه شنبه ۲۳ تیر ۱۳۹۴ در ۶:۰۶ ب٫ظ #5971

آقا این کار نمیکنه.میشه بگید مشکل کجاست؟؟؟

سلام دوست عزیز. بهتر است اطلاعات بیشتری در اختیار بزارید تا بشه کمک کرد. صرفا اینکه بگید کار نمیکنه ممکنه هزار دلیل داشته باشه. 🙂

اما خب بگذریم… من چند روز پیش این اسکریپت رو اصلاح کردم و به طور کل از یه روش دیگه‌ای استفاده کردم که مناسب تر هست و اینجا باهاتون به اشتراک میزارم.
=============================================
ابتدا فایل های جدید رو دانلود کنید:
دانلود فایل های جدید
داخل پنجره مدیریت فرم، دوتا فیلد از نوع لیست بازشو (DropDown Select) ایجاد کنید.
در فیلد اول (استان)، مقادیر رو از فایل لیست استان‌ها بصورت گروهی وارد کرده و بعد در قسمت کلاس‌های سفارشی فیلد عبارت state رو اضافه کنید.
در فیلد دوم (شهر)، مقادیر رو از فایل لیست شهرها بصورت گروهی وارد کرده و بعد در قسمت کلاس‌های سفارشی فیلد عبارت city رو اضافه کنید.

حالا داخل پوشه اصلی قالب سایتتون، یک پوشه به نام js بسازید و دو فایل statecity.js و jquery.chained.min.js رو داخلش کپی کنید. (اگر پوشه js از قبل موجود بود که فقط کافیه فایلهایی که گفتم رو از داخل بسته دانلودی، داخلش کپی کنید.)

حالا باید این فایل‌ها رو هنگام بارگزاری سایت اجرا کنیم. برای اینکار باید فایلهای header.php و footer.php قالب رو ویرایش کنید.

داخل فایل header.php بعد از عبارت:
<?php wp_head(); ?>
کد زیر رو کپی کنید:

  <?php
add_action("gform_enqueue_scripts", "enqueue_city_script", 10, 2);
function enqueue_city_script($form, $is_ajax){
    if(!$is_ajax){
		wp_enqueue_script('statecity_script', get_template_directory_uri() . '/js/statecity.js');
        wp_enqueue_script('chain_script', get_template_directory_uri() . '/js/jquery.chained.min.js');
    }
}
	?>

و فایل رو ذخیره کنید.
نکته: اگر از Child-Theme استفاده میکنید، باید در کد فوق به جای get_template_directory_uri مقدار get_stylesheet_directory_uri رو قرار بدید.

و در فایل footer.php بعد از عبارت:
<?php wp_footer(); ?>
کد زیر رو کپی کنید:
<script>jQuery('li.city select').chained('li.state select');</script>
و فایل رو ذخیره کنید.

تمام شد. می‌تونید فرم رو لود بکنید و نتیجه رو ببینید. بهتون اطمینان میدم به طور قطع بدون مشکل کار میکنه چراکه خودم کاملا تستش کردم. اگر مشکلی داشتید، سورس صفحه رو بصورت HTML بررسی کنید تا مطمئن بشید فایل‌های statecity.js و jquery.chained.min.js و همینطور کد :
<script>jQuery('li.city select').chained('li.state select');</script>
در صفحه به درستی لود شده باشن. هر مشکلی در عدم اجرا برمیگرده به درست قرار نگرفتن این سه مورد در صفحه.

انشالله که مفید باشه.
موید باشید.