هماهنگ کردن افزونه FVM با زبان فارسی و استایلهای RTL
نگارش جدید این افزونه به صورت پیشفرض مشکل شرح داده شده در ادامه را برطرف کرده است و به انجام کار خاصی در این زمینه نیاز نیست.
افزونهی Fast Velocity Minify در وردپرس یکی از افزونههای کارآمد برای ادغام و فشردهسازی فایلهای CSS و JS است. یکی از مشکلات استفاده از این افزونه برای سایتهای فارسی زبان، پشتیبانی نکردن آن از CSSهای راست به چپ یا RTL است. به عبارت دیگر اگر برخی افزونهها یا قالب سایت شما برای تعریف CSS راست به چپ از قابلیتهای وردپرس استفاده کرده باشد، پس از فعال کردن این افزونه، سایت شما به درستی نمایش داده نمیشود.
برای رفع این مشکل کافی است تا کدهای زیر را در فایل 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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
add_action( 'wp_print_styles', 'roka_enable_rtl_support_for_fvm', PHP_INT_MAX + 1, 0 ); function roka_enable_rtl_support_for_fvm() { global $wp_styles; if( false == has_action( 'wp_print_styles', 'fastvelocity_min_merge_header_css' ) ) { return; } if( ! is_object( $wp_styles ) ) { return; } $old_todo = $wp_styles->to_do; $wp_styles->all_deps( $wp_styles->queue ); $todo = $wp_styles->to_do; $wp_styles->to_do = $old_todo; foreach ( $todo as $key => $handle ) { if ( ! in_array( $handle, $wp_styles->done, true ) && isset( $wp_styles->registered[ $handle ] ) ) { $obj = $wp_styles->registered[ $handle ]; if ( 'rtl' === $wp_styles->text_direction && isset( $obj->extra[ 'rtl' ] ) && $obj->extra[ 'rtl' ] ) { $media = isset( $obj->args ) ? esc_attr( $obj->args ) : 'all'; $new_handle = "{$handle}-rtl"; if ( true === $obj->extra[ 'rtl' ] || 'replace' === $obj->extra[ 'rtl' ] ) { $pos = array_search( $handle, $wp_styles->queue, true ); $suffix = isset( $obj->extra['suffix'] ) ? $obj->extra['suffix'] : ''; wp_dequeue_style( $handle ); wp_enqueue_style( $new_handle, str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $obj->src ), $obj->deps, $obj->ver, $media ); } else { $pos = array_search( $handle, $wp_styles->queue, true ) + 1; wp_enqueue_style( $new_handle, $obj->extra[ 'rtl' ], $obj->deps, $obj->ver, $media ); wp_style_add_data( $handle, 'rtl', false ); } // reorder newly added style to the right position... unset( $wp_styles->queue[ $new_handle ] ); array_splice( $wp_styles->queue, $pos, 0, $new_handle ); } } } } |