通常,如果您想在WordPress中自定义帖子(通用:ie all)类型,您可以为其创建一个自定义页面模板,即按照模板层次结构,将根据其名称和在该层次结构中的位置自定义页面。在下面的模板图形的左边,第一个将被选中。如果我曾经需要创建自定义页面格式,那就是我所做的。
具有
pages
(而不是
posts
) 您可以选择应用于页面的“默认”模板。这通常与页面是否有侧边栏有关,因为默认情况下会有侧边栏,并且通常会有另一个“全宽”选项。
我最近使用了一个插件,它有一个很好的特性,可以使每个页面在前端编辑器中都是唯一的。我认为只有通过该内容的自定义页面/帖子模板文件才能实现这一点。
也就是说,在不创建自定义帖子类型或模板文件的情况下,插件使用了一些钩子,从而仅为该帖子自定义修改页面格式。
我想做一些类似的事情,我可以规定我的大多数页面遵循标准格式,但对于某些以某种方式或其他方式标识的页面,我希望更改格式,我更希望通过挂钩或过滤器,而不是通过额外的页面。
这些更改主要基于CSS。
理想情况下,我希望有一个类似于“默认模板”元框的下拉列表,允许我选择要使用的模板并应用于该页面。
出于论证和示例的考虑,默认值将保持不变,另一个选项将更改max-width
和background-color
的.col-ful
类以及内容和页脚之间的额外小部件区域。
我知道我可以创建一个自定义页面类型并将其用于这些页面,但我仍然希望能够利用层次结构的自定义命名原则,以便在必要时进一步自定义页面。也就是说,我希望它在内容外部表现得像默认模板下拉列表一样,但仍然允许命名页面类型允许的自定义内容格式。另外,我希望模板可以跨多种帖子类型使用,而不仅仅是页面。
edit: 我喜欢LSW Mo在评论中提出的想法,最初我认为它会起作用,但是,我需要修改的属性在.col-ful
已分类div
(图像中高亮显示)。我想覆盖max-width
属性设置得太低,我不喜欢(在右窗格的较高位置可见)。
如果有人能建议如何按照LSW Mo所述的方式修改,我们将不胜感激。
SO网友:Madivad
我最终完成了这项工作,由于@LWS-Mo和@Milo的评论,这比我预期的要容易得多。
在我的页面中,我添加了custom field
具有name=add_class
和key=extra-wide
.
然后我使用代码片段插件(我不想在主题的function.php
因为我在主主题和子主题之间切换。另外,在代码段中,我能够有选择地启用和禁用不同的代码段)。使用该插件,我添加了以下代码:
add_filter( \'body_class\', \'add_extra_body_classes\' );
function add_extra_body_classes( $classes ) {
global $post;
$my_post_meta = get_post_meta($post->ID, \'add_class\', true);
if ( ! empty ( $my_post_meta ) ) {
return array( $my_post_meta );
return array_merge( $classes, array( $my_post_meta ) );
}
return $classes;
}
然后在自定义CSS中,我添加了:
.extra-wide #page #content .col-full{
max-width: 95%;
}
这使我能够深入到我需要的第一级更改。从那里,它只是跟随反弹的球,并改变CSS,以获得我想要的。