我试着在WordPress帖子模板中查找。body类所在的php文件,找到了生成我想要添加的类的函数,当Im也在子页面或帖子上时,并将其复制到我的函数中。php。。。然后我添加了is_single()
和is_page()
这似乎至少在一定程度上起到了作用,但我无法让它正确获取模板ID,就像它在访问父页面时自己所做的那样。
这就是我尝试的:
add_filter(\'body_class\',\'body_class_slugs\');
function body_class_slugs($classes) {
global $wp_query, $wpdb;
if (is_single() || is_page() || is_page_template()) {
$classes[] = \'page-template\';
$classes[] = \'page-template-\' . sanitize_html_class( str_replace( \'.\', \'-\', get_post_meta( $page_id, \'_wp_page_template\', true ) ), \'\' );
}
return $classes;
}
这是输出的内容:
<body class="single single-post postid-852 single-format-standard page-template page-template-">
注意事项
page-template-, 这是我需要的类,但剩下的模板名。。。所以它将是页面模板名php。
My goal is to basically always have the parent template name class present in the body tag when visiting ANY page, ie. Pages, Subpages, Posts, etc...
EDIT 1
所以我设法
t31os\'s 代码工作,即使我不确定我甚至做得对吗?
我在函数中放置了他的过滤器。php优先:
add_filter( \'template_include\', \'var_template_include\', 1000 );
function var_template_include( $t ){
$GLOBALS[\'current_theme_template\'] = basename($t);
return $t;
}
function get_current_template( $echo = false ) {
if( !isset( $GLOBALS[\'current_theme_template\'] ) )
return false;
if( $echo )
echo $GLOBALS[\'current_theme_template\'];
else
return $GLOBALS[\'current_theme_template\'];
}
然后,我添加了我从WordPress核心获得的最后一段代码
post-template.php
&文件;已添加
$classes[] = \'page-template-\' . get_current_template();
正如他所建议的那样:
add_filter(\'body_class\',\'body_class_slugs\');
function body_class_slugs($classes) {
global $wp_query, $wpdb;
if (is_page_template() || is_page() || is_single()) {
$classes[] = \'page-template-\' . sanitize_html_class( str_replace( \'.\', \'-\', get_current_template() ) );
}
return $classes;
}
你也会注意到我不想看到-
page-template-name.php 所以我添加了
sanitize_html_class( str_replace( \'.\', \'-\', get_current_template() ))
删除句点。
这离我们更近了一步,但是unfortunately it still doesn\'t retrieve the parent template name in that way when visiting single posts or subpages, 它只获取当前使用的模板。这在单篇文章页面上也不是很有用,因为它会呈现:page-template-single-php
而不是实际使用的单个模板,因为我有几个不同的模板。。。。。因此,为什么检索要在所有关联页面上显示的父模板名称最有用。
Any additional help is super appreciated!!! -- Its almost working!!!