Using WordPress ‘is_rtl()’ PHP function

The is_rtl() WordPress PHP function determines whether the current locale is right-to-left (RTL).


if (is_rtl()) {
    // Execute RTL-specific code


  • None

More information

See WordPress Developer Resources: is_rtl()


Enqueue RTL-specific styles and scripts

Load an RTL-specific CSS file and JavaScript file when the current locale is RTL.

if (is_rtl()) {
    wp_enqueue_style('style-rtl', get_template_directory_uri() . '/css/style-rtl.css');
    wp_enqueue_script('script-rtl', get_template_directory_uri() . '/js/script-rtl.js');

Add a CSS class for RTL layouts

Add a CSS class to the body tag for RTL-specific styling.

function add_rtl_body_class($classes) {
    if (is_rtl()) {
        $classes[] = 'rtl-layout';
    return $classes;
add_filter('body_class', 'add_rtl_body_class');

Modify output for RTL text direction

Reverse the order of elements for RTL layouts.

if (is_rtl()) {
    $elements = array_reverse($elements);

Adjust the HTML attribute for RTL languages

Set the ‘dir’ attribute in the HTML tag based on the text direction.

function set_direction_attribute() {
    echo is_rtl() ? 'dir="rtl"' : 'dir="ltr"';
add_action('language_attributes', 'set_direction_attribute');

Switch menu positions for RTL layouts

Switch the primary and secondary menus for RTL layouts.

function switch_menus_rtl($args) {
    if (is_rtl()) {
        if ('primary' === $args['theme_location']) {
            $args['theme_location'] = 'secondary';
        } elseif ('secondary' === $args['theme_location']) {
            $args['theme_location'] = 'primary';
    return $args;
add_filter('wp_nav_menu_args', 'switch_menus_rtl');