خطای invalid iso 4217 currency code ووکامرس

اگر سایت فروشگاهی دارید که واحد پولی اون تومان ایران هست، قطعا خطای invalid iso 4217 currency code رو توی سرچ کنسول گوگل مشاهده می‌کنید. امروز روش حل این مشکل رو به شما توضیح خواهم داد همراه با افزونه‌ای که برای این‌کار برنامه‌نویسی کردم.

خطای invalid iso 4217 currency code ووکامرس

در دنیای تجارت الکترونیک، ووکامرس به عنوان یکی از پرکاربردترین پلتفرم‌های فروشگاهی شناخته می‌شود. با این حال، گاهی اوقات کاربران با خطاهای فنی مواجه می‌شوند که می‌تواند تجربه کاربری را تحت تأثیر قرار دهد. یکی از این خطاها، خطای “Invalid ISO 4217 currency code” است که برای فروشگاه‌هایی که از واحد پولی “تومان” استفاده می‌کنند، بسیار رایج است. این مقاله به بررسی علت این مشکل و راه‌حلی که توسط یک افزونه جدید ارائه شده، می‌پردازد.

خطای invalid iso 4217 currency code ووکامرس

دلیل بروز این ارور

این خطا زمانی رخ می‌دهد که ووکامرس سعی می‌کند واحد پولی “تومان” را با کد “IRT” به سیستم‌های خارجی مانند سرچ کنسول گوگل معرفی کند. متأسفانه، از آنجا که “تومان” به طور رسمی در استانداردهای ISO 4217 ثبت نشده است، گوگل نمی‌تواند این کد را به درستی تشخیص دهد و به این ترتیب خطای مذکور به وجود می‌آید. این مسئله می‌تواند بر شناسایی و رتبه‌بندی فروشگاه در نتایج جستجوی گوگل تأثیر بگذارد.

دلیل بروز این ارور

راه حل من برای حل این مشکل

برای حل این مشکل، یک افزونه جدید ساختم که به صورت خاص برای ادغام “تومان” به عنوان واحد پولی در ووکامرس طراحی شده است. این افزونه با ایجاد یک پل بین کد پولی “IRT” و استانداردهای قابل شناسایی توسط گوگل، به رفع این مشکل کمک می‌کند.

نصب و پیکربندی این افزونه بسیار ساده است. کافیست افزونه را از این لینک دانلود و نصب بفرمایید.

یا به جای استفاده از افزونه می‌توانید کد زیر را به فایل functions.php قالب سایت خود اضافه کنید. (البته در این صورت با آپدیت قالب، کد حذف خواهد شد.)


// Add settings to WooCommerce
function mihanwp_irr_add_settings( $settings ) {
    $settings[] = array(
        'title' => __( 'MihanWP IRR Schema Fix', 'mihanwp-irr-schema-fix' ),
        'type'  => 'title',
        'desc'  => sprintf( __( 'Settings for MihanWP IRR Schema Fix. More information <a href="%s" target="_blank">here</a>.', 'mihanwp-irr-schema-fix' ), 'https://mihanwp.com/invalid-iso-4217-currency-code/' ),
        'id'    => 'mihanwp_irr_schema_fix_options',
    );

    $settings[] = array(
        'title'   => __( 'Enable IRR Schema Fix', 'mihanwp-irr-schema-fix' ),
        'desc'    => __( 'Check this box to enable the IRR Schema Fix.', 'mihanwp-irr-schema-fix' ),
        'id'      => 'mihanwp_irr_schema_fix_enable',
        'default' => 'yes',
        'type'    => 'checkbox',
    );

    $settings[] = array( 'type' => 'sectionend', 'id' => 'mihanwp_irr_schema_fix_options' );

    return $settings;
}
add_filter( 'woocommerce_get_settings_products', 'mihanwp_irr_add_settings', 10, 1 );

// Custom currency function (Edit)
function mihanwp_irr_custom_woocommerce_currency( $currency ) {
    if ( 'yes' === get_option( 'mihanwp_irr_schema_fix_enable', 'yes' ) ) {
      // Return IRR directly without using backtrace
        return 'IRR';
    }

    return $currency;
}
add_filter( 'woocommerce_currency', 'mihanwp_irr_custom_woocommerce_currency', 10, 1 );

// Fix structured data for WooCommerce, Yoast, and Rank Math

function mihanwp_irr_fix_structured_data( $markup_offer ) {
    if ( 'yes' === get_option( 'mihanwp_irr_schema_fix_enable', 'yes' ) && is_array( $markup_offer ) ) {
        foreach ( $markup_offer as $key => &$value ) {
            if ( $key === 'priceCurrency' ) {
                $value = 'IRR';
            }

            if ( in_array( $key, [ 'price', 'lowPrice', 'highPrice' ], true ) ) {
                $value = intval( $value );
            }

            if ( is_array( $value ) ) {
                $value = mihanwp_irr_fix_structured_data( $value );
            }
        }
    }
    return $markup_offer;
}
add_filter( 'woocommerce_structured_data_product_offer', 'mihanwp_irr_fix_structured_data', 100 );
add_filter( 'wpseo_schema_offer', 'mihanwp_irr_fix_structured_data', 10, 3 );
add_filter( 'rank_math/snippet/rich_snippet_product_entity', 'mihanwp_irr_fix_structured_data', 100 );
واحد پولی ووکامرس بعد از نصب افزونه

به همین راحتی! مشکل حل شد.

نظر شما در این مورد چیه؟

  1. U24239 ۲۴ شهریور ۱۴۰۴

    کد رو که وارد می کنیم تومان رو تبدیل به ریال میکنه توی سایت! ما نمیخوایم این اتفاق بیفته! میخوایم همون تومان باقی بمونه ولی ارور سرچ کنسول هم نگیریم! وگرنه اگه ریال بزاریم که ذاتا ارور نمیگیریم!
    هم توی افزونه هم کد این مشکل هست متاسفانه !
    از رنک مث استفاده میکنم . هم رایگان هم پر این مشکل بود ! در صورتی که کل افزونه های دیگه غیرفعال باشن هم همین مشکل پابرجاست!

    • Reza Rad رضا راد ۲۵ شهریور ۱۴۰۴

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