Body classes in child theme

时间:2014-01-30 作者:Pieter Goosen

在主题二万四千年中full-width 类使用以下代码定义

if ( ( ! is_active_sidebar( \'sidebar-2\' ) )
|| is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
 || is_attachment() ) {
 $classes[] = \'full-width\';
 }
从该函数

function twentyfourteen_body_classes( $classes ) {
if ( is_multi_author() ) {
    $classes[] = \'group-blog\';
}

if ( get_header_image() ) {
    $classes[] = \'header-image\';
} else {
    $classes[] = \'masthead-fixed\';
}

if ( is_archive() || is_search() || is_home() ) {
    $classes[] = \'list-view\';
}

if ( ( ! is_active_sidebar( \'sidebar-2\' ) )
    || is_page_template( \'page-templates/full-width.php\' )
    || is_page_template( \'page-templates/contributors.php\' )
    || is_attachment() ) {
    $classes[] = \'full-width\';
}

if ( is_active_sidebar( \'sidebar-3\' ) ) {
    $classes[] = \'footer-widgets\';
}

if ( is_singular() && ! is_front_page() ) {
    $classes[] = \'singular\';
}

if ( is_front_page() && \'slider\' == get_theme_mod( \'featured_content_layout\' ) ) {
    $classes[] = \'slider\';
} elseif ( is_front_page() ) {
    $classes[] = \'grid\';
}

return $classes;
}
add_filter( \'body_class\', \'twentyfourteen_body_classes\' );
我在侧边栏内容中添加了一系列侧边栏。php文件。这些侧边栏还必须具有与sidebar-2. 对我来说,仅仅使用与第214个主题不同的功能名称,并且仍然挂在body_class, 保持相同的类名(全宽),并将子主题中的上述代码更改为

if ( ( ! is_active_sidebar( \'sidebar-2\' ) &&  ! is_active_sidebar( $sidebar_option ) )
 || is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
|| is_attachment() ) {
 $classes[] = \'full-width\';
 }
我得到了很多东西,告诉我如何为一个新的主体类添加广告并删除一个主体类,但没有关于如何在子主题中更改父主题的现有主体类,或者如果可能的话

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

感谢您为这个问题提供的所有插图。下面是我根据上面1fixdotio的答案得出的结论。我首先必须取消设置full width body类,然后注册一个新的body类以合并我的新边栏。这是代码

  // Remove body class and register new body class to accomodate the new custom-sidebar-per-page sidebars
function remove_a_body_class($classes) {
      foreach($classes as $key => $value) {
      if ($value == \'full-width\') unset($classes[$key]);
      }
return $classes;
}

add_filter(\'body_class\', \'remove_a_body_class\', 20, 2);

function pietergoosen_add_new_body_class( $classes ) {
$options = get_post_custom($post->ID);  
$sidebar_choice = $options[\'custom_sidebar_per_page\'][0];  
    if ( (! is_active_sidebar( \'sidebar-2\' ) && ! is_active_sidebar( $sidebar_choice ) )
        || is_page_template( \'page-templates/full-width.php\' )
        || is_page_template( \'page-templates/contributors.php\' )
        || is_attachment() ) {
        $classes[] = \'custom-sidebar-per-page-width\';
    }

    return $classes;
}
add_filter( \'body_class\', \'pietergoosen_add_new_body_class\' );

SO网友:1fixdotio

假设您不喜欢默认值page 默认情况下,WP随附的body类,您可以在过滤器函数中执行此操作:

if ( ( ! is_active_sidebar( \'sidebar-2\' ) &&  ! is_active_sidebar( $sidebar_option ) )
 || is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
|| is_attachment() ) {
    if(($key = array_search( \'page\', $classes)) !== false) {
        unset($classes[$key]); // Unset what you don\'t need
    }
    $classes[] = \'full-width\'; // Add what you want
}
或者,如果要删除ALL 可湿性粉剂随附车身等级:

if ( ( ! is_active_sidebar( \'sidebar-2\' ) &&  ! is_active_sidebar( $sidebar_option ) )
 || is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
|| is_attachment() ) {
    $classes = array( \'full-width\' ); // Don\'t use default array, set a new one
}
希望我没有误会你。

结束

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c

Body classes in child theme - 小码农CODE - 行之有效找到问题解决它

Body classes in child theme

时间:2014-01-30 作者:Pieter Goosen

在主题二万四千年中full-width 类使用以下代码定义

if ( ( ! is_active_sidebar( \'sidebar-2\' ) )
|| is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
 || is_attachment() ) {
 $classes[] = \'full-width\';
 }
从该函数

function twentyfourteen_body_classes( $classes ) {
if ( is_multi_author() ) {
    $classes[] = \'group-blog\';
}

if ( get_header_image() ) {
    $classes[] = \'header-image\';
} else {
    $classes[] = \'masthead-fixed\';
}

if ( is_archive() || is_search() || is_home() ) {
    $classes[] = \'list-view\';
}

if ( ( ! is_active_sidebar( \'sidebar-2\' ) )
    || is_page_template( \'page-templates/full-width.php\' )
    || is_page_template( \'page-templates/contributors.php\' )
    || is_attachment() ) {
    $classes[] = \'full-width\';
}

if ( is_active_sidebar( \'sidebar-3\' ) ) {
    $classes[] = \'footer-widgets\';
}

if ( is_singular() && ! is_front_page() ) {
    $classes[] = \'singular\';
}

if ( is_front_page() && \'slider\' == get_theme_mod( \'featured_content_layout\' ) ) {
    $classes[] = \'slider\';
} elseif ( is_front_page() ) {
    $classes[] = \'grid\';
}

return $classes;
}
add_filter( \'body_class\', \'twentyfourteen_body_classes\' );
我在侧边栏内容中添加了一系列侧边栏。php文件。这些侧边栏还必须具有与sidebar-2. 对我来说,仅仅使用与第214个主题不同的功能名称,并且仍然挂在body_class, 保持相同的类名(全宽),并将子主题中的上述代码更改为

if ( ( ! is_active_sidebar( \'sidebar-2\' ) &&  ! is_active_sidebar( $sidebar_option ) )
 || is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
|| is_attachment() ) {
 $classes[] = \'full-width\';
 }
我得到了很多东西,告诉我如何为一个新的主体类添加广告并删除一个主体类,但没有关于如何在子主题中更改父主题的现有主体类,或者如果可能的话

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

感谢您为这个问题提供的所有插图。下面是我根据上面1fixdotio的答案得出的结论。我首先必须取消设置full width body类,然后注册一个新的body类以合并我的新边栏。这是代码

  // Remove body class and register new body class to accomodate the new custom-sidebar-per-page sidebars
function remove_a_body_class($classes) {
      foreach($classes as $key => $value) {
      if ($value == \'full-width\') unset($classes[$key]);
      }
return $classes;
}

add_filter(\'body_class\', \'remove_a_body_class\', 20, 2);

function pietergoosen_add_new_body_class( $classes ) {
$options = get_post_custom($post->ID);  
$sidebar_choice = $options[\'custom_sidebar_per_page\'][0];  
    if ( (! is_active_sidebar( \'sidebar-2\' ) && ! is_active_sidebar( $sidebar_choice ) )
        || is_page_template( \'page-templates/full-width.php\' )
        || is_page_template( \'page-templates/contributors.php\' )
        || is_attachment() ) {
        $classes[] = \'custom-sidebar-per-page-width\';
    }

    return $classes;
}
add_filter( \'body_class\', \'pietergoosen_add_new_body_class\' );

SO网友:1fixdotio

假设您不喜欢默认值page 默认情况下,WP随附的body类,您可以在过滤器函数中执行此操作:

if ( ( ! is_active_sidebar( \'sidebar-2\' ) &&  ! is_active_sidebar( $sidebar_option ) )
 || is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
|| is_attachment() ) {
    if(($key = array_search( \'page\', $classes)) !== false) {
        unset($classes[$key]); // Unset what you don\'t need
    }
    $classes[] = \'full-width\'; // Add what you want
}
或者,如果要删除ALL 可湿性粉剂随附车身等级:

if ( ( ! is_active_sidebar( \'sidebar-2\' ) &&  ! is_active_sidebar( $sidebar_option ) )
 || is_page_template( \'page-templates/full-width.php\' )
 || is_page_template( \'page-templates/contributors.php\' )
|| is_attachment() ) {
    $classes = array( \'full-width\' ); // Don\'t use default array, set a new one
}
希望我没有误会你。

相关推荐

Child-theme breaks site

所以,我有一个子主题,里面除了所需的CSS文件之外什么都没有。一旦我激活了这个儿童主题,我的整个网站就关闭了。最后我有两个问题:激活一个只有CSS的子主题怎么能破坏我的网站</我怎样才能回到我原来的主题</这些是网站给我的错误:Warning: require_once(/wp-content/themes/interio_child/admin/options-framework.php) [function.require-once]: 无法打开流:中没有此类文件或目录/wp-c