使用过滤器将类附加到模板容器

时间:2015-03-29 02:56:33

标签: php wordpress wordpress-theming genesis

好的,所以我在php和java方面不是很强,我正在学习。现在我正在使用epik工作,如果重要的话。没有运气但是试图编写一个过滤器来将一个类添加到functions.php

模板上的特定div中

我扩大了我的网站,但我不希望整个博客部分(博客主页,类别和单个帖子)一样宽,所以我可以使用本机编程,并学习如何编写这些东西。

现在我通过我的样式表控制宽度

    .page-id-89 .site-inner .wrap {
    padding: 0 5% 0;
}

如何将此作为过滤器编写并将其挂钩到网站上述部分中的'.site-inner .wrap'?

所以基本上这个函数会查找'.site-inner .wrap'并在那些帖子类型上附加一个类(比如.squeeze)和我的填充

我很感激任何帮助,因为我通过这种方式学到了很多东西!祝周末愉快

2 个答案:

答案 0 :(得分:1)

这项工作可能已经完成了。如果您的主题正确调用body_class,那么您的body元素应该已经为当前模板设置了类。例如,以下是WordPress网站主页的正文类:

home page page-id-8 page-template

关于单个帖子的正文类

single single-post postid-5418 single-format-standard

如果您使用的是自定义页面模板,则还会有一个特定于该模板的类,通常为my-custom-template-php

形式

如果您要扩展的所有页面,或者相反,您不想扩展的页面都有特定的主体类,则可以在css选择器中使用该类。例如,此选择器仅适用于主页:

.home .site-inner .wrap

如果您无法区分要扩展的模板,可以过滤body_class函数并使用条件标记添加所需的类:

add_filter('body_class', function($classes) {
    if( is_home() ) {
        $classes[] = 'wide';
    }
    return $classes;
});

上面的示例将类wide添加到主页上的body元素。

答案 1 :(得分:0)

以下是关于创世纪中钩子和过滤器的有用指南。

http://genesistutorials.com/visual-hook-guide/

https://wordpress.org/plugins/genesis-visual-hook-guide/

https://alexanderdejong.com/genesis/changing-adding-custom-classes-html-5/

add_filter( 'genesis_attr_content-sidebar-wrap', 'custom_add_css_attr' );

function custom_add_css_attr( $attributes ) { 
    if ( is_page_template( 'page_blog.php' ) ) { 
        $attributes['class'] .= ' squeeze'; 
    } 
   return $attributes; 
}

您可以使用.site-inner .wrap .content-sidebar-wrap代替.site-inner .wrap。我认为.site-inner .wrap一般是声明的,所以我们不能在特定部分添加类。

希望这会有所帮助。