0

好的,所以我在 php 和 java 方面不是很强,我正在学习。现在,如果这很重要,我正在使用 epik 与 genesis 合作。没有运气,但试图编写一个过滤器以将类添加到functions.php中模板上的特定div

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

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

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

如何将其编写为过滤器并将其连接到网站上述部分中的“.site-inner .wrap”?

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

我很感激任何帮助,因为我正在学习我的方式!周末愉快

4

2 回答 2

1

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

home page page-id-8 page-template

关于单篇文章的body类

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 元素中。

于 2015-03-29T03:15:05.170 回答
0

这是关于 genesis bro 中的钩子和过滤器的有用指南。

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

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

https://alexanderdejong.com/genesis/changeing-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一般是声明的,所以我们不能在特定部分添加类。

希望这会有所帮助。

于 2015-03-30T04:14:09.890 回答