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

مراحل انجام کار
- ابتدا وارد کنترل پنل هاست خود شوید.
- در مرحله ی بعد وارد فایل منیجر شوید. (ممکن است بخواهید از طریق ftp این کار را انجام دهید که تفاوتی از این نظر ندارد.)
- سپس وارد مسیر زیر شوید:
public_html/wp-content/themes/your-theme - خب مسیر بالا که مشخص شده است به جای your-theme در واقع پوسته یا قالب فعال سایت خود را انتخاب کنید.
- بعد از ورود به مسیر ذکر شده به دنبال فایل functions.php بگردید و آنرا را برای ویرایش باز کنید. (ممکن است این فایل در قالب شما وجود نداشته، در این صورت میتوانید این فایل را به صورت دستی بسازید.)
- در انتهای این فایل کد زیر را اضافه کنید:
<?php
add_filter( 'woocommerce_default_address_fields' , 'bistscript_override_address_fields', 999, 1 );
function bistscript_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;
}
?>
- تگ باز و بستهی پی اچ پی را نیاز نیست به این فایل اضافه کنید و در آخرین خطهای این فایل کد بالا را اضافه کنید و آنرا را ذخیره کنید.
- تذکر: حتما قبل از انجام این کار از سایت خود بکاپ تهیه کنید.
- بعد از انجام این کار به صفحهی تسویه حساب/پرداخت که مرحلهی نهایی خرید در ووکامرس است بروید و تغییرات را مشاهده کنید.
راستی یه خبر خوش براتون داریم؛ یک دورهی ویدیویی وردپرس به صورت رایگان برای شما کاربران عزیز تهیه شده است که از این لینک به آن دسترسی پیدا کنید. اگر روشهای بهتری برای انجام “تغییر ترتیب فیلد آدرس در وکامرس” را دارید آنرا با ما به اشتراک بگذارید.



















این کد با افزونههای مدیریت فیلد آدرس تداخلی نداره؟
بله تداخل ایجاد میکند.
میشه ترتیب فیلدها رو فقط برای بخش checkout تغییر داد و نه برای آدرس پروفایل کاربر؟
بله میتوان در نوشتههای آینده به این موضوع میپردازیم. نوشتههای جدید وبسایت ما را دنبال کنید.
اگر قالب child theme داشته باشیم، باید کد رو توی همون بذاریم یا اصلی؟
خیر در theme child قرار بدهید.
آیا این تغییر ترتیب فیلدها بعد از آپدیت ووکامرس هم باقی میمونه؟
اگر در قالب theme child خود قرار دهید خیر.
سلام دمتون گرم از بین ۱۰ تا کد که کار نکرد کد شما کار کرد کارتون درسته
تمام کدهایی که در وبسایت موجود هست حاصل تجربیات تیم فنی در پروژه های مختلف است از این رو میتوانید به سادگی از این کدها استفاده کنید.
موفق باشید