تغییر ترتیب فیلدهای آدرس در ووکامرس
اطلاعات آدرس نمایش داده شده در صفحه تسویه حساب ووکامرس به صورت استاندارد برای زبان انگلیسی طراحی شدهاند ابتدا فیلد کشور، آدرس، شهر و سپس استان در معرض دید بازدیدکنندگان از سایت قرار میگیرد.
اگر میخواهید تجربه کاربری بهتری برای خریداران از فروشگاه اینترنتی خود فراهم کنید و فیلدهای آدرس را به شکل استاندارد برای زبان فارسی مرتب کنید، قطعه کد زیر را در فایل functions.php قالب خود درج نمایید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
add_filter( 'woocommerce_default_address_fields' , 'roka_override_address_fields', 999, 1 ); function roka_override_address_fields( $fields ) { $persian_sort = array( 1 => 'country', 'state', 'city', 'address_1', 'address_2', 'postcode' ); foreach( $fields as $key => $field ) { if( ! in_array( $key, $persian_sort ) ) { $fields[ $key ][ 'persian_sort' ] = 0; } else { $fields[ $key ][ 'persian_sort' ] = array_search( $key, $persian_sort ); } } uasort( $fields, function( $val1, $val2 ) use( $persian_sort ) { if( $val1[ 'persian_sort' ] == 0 || $val2[ 'persian_sort' ] == 0 ) { return 0; } return $val1[ 'persian_sort' ] > $val2[ 'persian_sort' ] ? 1 : -1; } ); $i = 10; foreach( $fields as $key => $field ) { $fields[ $key ][ 'priority' ] = $i; $i += 10; } return $fields; } |
همان طور که مشاهده میکنید، در ابتدای تابع فوق، ترتیب مورد نظر از فیلدها به شکل «کشور»، «استان»، «شهر»، «آدرس» و «کد پستی» قابل مشاهده است. در صورت تمایل میتوانید ترتیب این فیلدها را تغییر دهید تا در صفحه پرداخت ووکامرس، ترتیب مورد نظر شما دیده شود.
لازم به ذکر است این تابع تمامی فیلدهای این بخش را پشتیبانی نمیکند و تنها میتوانید فیلدهای مربوط به آدرس را در این بخش مرتب نمایید.
همچنین در نوشتن این کد تلاش شده است، تا حداکثر سازگاری با افزونههای دیگر از جمله «ووکامرس فارسی» وجود داشته باشد. افزونههای دیگری که بخواهند در این بخش ووکامرس فیلدهای جدیدی اضافه کنند یا ترتیب آنها را تغییر دهند، میبایست بدون مشکل با این افزونه به درستی عمل کنند.
درود
تشکر از پست خوب شما
من کد رو گذاشتم ولی هیچ عکس العملی نشون نداده، میشه راهنمایی بفرمائید مشکل از کجا هستش؟
تشکر
با سلام
ممکن است کد را در محل نادرستی قرار داده باشید یا خطایی در محلی دیگر وجود داشته باشد یا تداخلی با یک افزونه یا قالب دیگر وجود دارد
سلام. مرسی. خیلی خوب بود. برای بنده که کار کرد. بازم ممنون
تشکر که به رایگان این رودر اختیار گذاشتید
سلام وقت بخیر
من کد رو اضافه کردم ولی موقع ذخیره کردن با همچین اروری بر خوردم
تغییرات کد PHP شما، به دلیل یک خطا در خط 459 از فایل wp-content/themes/woodmart/functions.php بازگردانده شد. لطفا اصلاح نمایید و دوباره سعی کنید که ذخیره نمایید.
syntax error, unexpected ';'
کدی که خطا گرفته اینه
$persian_sort=array(1=>'country','state','city','address_1','address_2','postcode');
ممنون میشم راهنمایی کنید
با سلام
احتمالا کدها را تغییراتی دادهاید که با مشکل مواجه شده است. نسخهی اصلی را عینا در سایت درج کنید نباید با مشکلی مواجه شوید.
در این خط که ارسال کردید خطایی دیده نمیشود.
خیلی خوب بود برای من ترتیب چینش تغییر کرد ممنون.
دمتون گرم برای من که کار داد خیلی بهتر از نصب افزونه برای یک تغییر کوچیک در سایت هست
دمتون گرم برای منم درست شد
عالی ممنون
سپاس درست کار کرد
عالی بود سپاس
دمتون گرم خدا خیرتون بده
چند سالی بود این مشکل تو سایتم بود دیگه مشتریا عادت کرده بودن😂
تو هر سایتی میرفتم همش افزونه گذاشته بودن منم که اصلا خوشم نمیاد افزونه هام شلوغ بشه
بازم سپاس عالی بود🙏
سلام من تو سایت این مشکل رو داشتم و با کمک این کد حل شد . فقط سری اول بالای کد یک php امده بود احتمالا برای کپی کردن من بود گزینه php پاک کردم و همه چی عالی شد
سپاس از آموزش خوبتون
با این کد مشکل سایت بنده هم برطرف شد
پایدار باشید
با تشکر
انجام شد، با کمترین بار روی سرور!
موفق و پیروز باشید...
خدا خیرتون بده خیلی خیلی عالی بود
ممنونم . مطلبتون بسیار کاربردی بود .
سلام
من تمامی منابع انگلیسی را دیدم اما برای تغییر ترتیب آدرسها کدی نداشتند و فقط ترتیب ایمیل را تغییر میده اون کد. کد شما به درستی کار کرد.
خیلی ممنونم و آرزوی موفقیت دارم براتون!
خیلی عالی شد ممنون
درود بر شما
سلام...وقت بخیر..
این کد روی جزئیات صورت حساب تاثیر نداره!!!فیلدهای ادرس و شهر و... بخش حمل و نقل به ادرس دیگر تاثیر میزاره؟؟!!! برای اینکه روی صورت حساب چه کدی رو باید بزنیم؟!! با تشکر..