هماهنگ کردن افزونه 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); functionroka_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($todoas$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 ); } } } } |