# Show Content Only in Certain Languages

> Adds a [wpide_lang only="fr,de"]...[/wpide_lang] shortcode that shows the enclosed text only when the page is displayed in one of those languages, for small differences between translations.

- Type: PHP
- Runs: Run everywhere
- Category: [Multilingual](https://wpide.com/library/category/multilingual/)
- Tags: shortcode, language, conditional
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/i18n-language-content-shortcode/

## Code

```php
add_shortcode( 'wpide_lang', function ( $atts, $content = '' ) {
    $atts   = shortcode_atts( array( 'only' => '', 'except' => '' ), $atts, 'wpide_lang' );
    $locale = strtolower( determine_locale() );
    $code   = strtok( $locale, '_' );

    if ( defined( 'ICL_LANGUAGE_CODE' ) && ICL_LANGUAGE_CODE ) {
        $code = strtolower( ICL_LANGUAGE_CODE );
    } elseif ( function_exists( 'pll_current_language' ) && pll_current_language() ) {
        $code = strtolower( pll_current_language() );
    }

    $matches = function ( $list ) use ( $code, $locale ) {
        $items = array_filter( array_map( 'trim', explode( ',', strtolower( $list ) ) ) );
        return in_array( $code, $items, true ) || in_array( $locale, $items, true );
    };

    if ( '' !== $atts['only'] && ! $matches( $atts['only'] ) ) {
        return '';
    }

    if ( '' !== $atts['except'] && $matches( $atts['except'] ) ) {
        return '';
    }

    return do_shortcode( $content );
} );
```

## Notes

Uses the WPML or Polylang language when available, otherwise the WordPress locale (e.g. fr matches fr_FR). Add except="en" to hide content in a language instead.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Show Content Only in Certain Languages" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
