如何在翻译后的WPML页面之间获取共享的CSS主体类

时间:2018-03-06 作者:aitor

我需要将相同的CSS类添加到<body> 元素,但CSS类添加了body_class() 对于每个翻译都是不同的,因为它取自页面的翻译标题。

例如,对于“关于我们”页面,我得到以下标记:

<body class="about-us">        // English
<body class="sobre-nosotros">  // Spanish
我想获得两种语言的相同类:

<body class="about-us">        // English
<body class="about-us">        // Spanish
有没有办法为同一页面的所有翻译添加相同的CSS类?

非常感谢。

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

使用帖子名称来设置页面样式不是一种好的做法。也许你可以使用模板页面。

但如果你仍然想这样做,你可以这样做:

function add_default_language_slug_class( $classes ) {
    global $post;
    if ( isset( $post ) ) {
        $default_language = wpml_get_default_language(); // will return languague code of your default language for example \'en\'
        // get the post ID in default language
        $default_post_id = icl_object_id($post->ID, \'post\', FALSE,$default_language);
        // get the post object
        $default_post_obj = get_post($default_post_id);
        // get the name
        $default_post_name = $default_post_obj->post_name;
        // add default language post name to body class
        $classes[] = $default_post_name;
    }
    return $classes;
}
add_filter( \'body_class\', \'add_default_language_slug_class\' );

SO网友:CodeMascot

是的,你可以通过body_class 滤器您可以像这样向正文中添加类-

// Add specific CSS class by filter
add_filter( \'body_class\', \'the_dramatist_body_classes\' );
function the_dramatist_body_classes( $classes ) {
    return $classes[] = \'body-of-\' . ICL_LANGUAGE_CODE;
}
然后你可以像下面这样写CSS-

body[class^="body-of-"] {
    color: red;
}
那么上面到底发生了什么?首先,我们要为English 和es主体Spanish 然后我们通过使用body[class^="body-of-"] 指的是我们添加到正文的第一部分。通过这种方式,我们可以很容易地将单独的类添加到不同语言站点的主体中,并使用它们来应用相同的样式。

希望这有帮助。

结束

相关推荐

我的定制主题的style.css根本没有被应用

我正在创建自己的主题Wordpress,但是我为主题设计编写的CSS根本没有被应用。它以样式保存。css,我在我的函数中应用了以下内容。php文件:function letters_files() { wp_enqueue_style(\'style\',get_stylesheet_uri(),NULL, microtime() ); wp_enqueue_style(\'custom-google-fonts\', \'https://fonts.googleapis.