在主体<Body>元素中显示或隐藏lang=“ur

时间:2013-10-08 作者:John Doe

我有乌尔都语的RTL网站。lang="ur" 在主体中硬编码,即。<body lang="ur" <?php body_class(); ?>>. 现在,我想用一些PHP代码替换属性,这些代码将在特定条件下显示或隐藏属性。

我想在页面编辑屏幕上,有单选按钮。选择“删除”时,删除lang="ur" 从当前页(&M);否则,将其保留。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

看起来此属性已硬编码到您的身体标记中。

你可以自己调整body_lang() 功能如下(未测试):

<body 
   <?php ( function_exists( \'body_lang\' ) ) ? body_lang() : \'\' ;?> 
   <?php body_class(); ?>
>
您可以在functions.php 文件:

/**
 * Display the language attribute part for the body element.
 *
 * @param string $lang.
 * @return void.
 */

if( ! function_exists( \'body_lang\' ) )
{
    function body_lang( $lang = \'\' )
    {
         if( function_exists( \'get_body_lang\' ) )
             echo get_body_lang( $lang );
    }
} // end if function exists
以及

/**
 * Retrieve the language part for the body element.
 *
 * @param string $lang.
 * @return string $lang.
 */

if( ! function_exists( \'get_body_lang\' ) )
{
    function get_body_lang( $lang = \'\' )
    {
        // default language
        $lang = ( ! empty( $lang ) ) ? $lang : \'ur\';        

        // add your own logic here:
        if( is_single() )
            $lang = \'de\';

        elseif( is_page() )
            $lang = \'en\';

        $attr = sprintf( \'lang="%s"\', $lang );

        return apply_filters( \'body_lang\', $attr );
    }

} // end if function exists
过滤器的位置body_lang 为您提供进一步的控制。

要删除它,根据您自己的特殊逻辑,例如,您可以使用:

/**
 * Remove the language part according to a custom logic
 *
 * @param string $attr.
 * @return string $attr.
 */

 function my_body_lang( $attr )
 {
     // add your own logic here:
     if( is_single() )
     { 

         // get the post meta value for \'language\'. 
         // It can be \'Yes\', \'No\' or empty
         $show = get_post_meta( get_the_ID(), \'language\', TRUE );

         // Let\'s hide it if it\'s empty or \'No\'
         if( empty( $show ) || "No" === $show )
             $attr = \'\';

     }

     return $attr;
 }

add_filter( \'body_lang\', \'my_body_lang\' );
希望这能帮你找到解决办法。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register