在我的debug.log
:
PHP Notice: Trying to get property of non-object in /my-wesbite/wp-content/themes/express/header.php on line 36
这是第36行
header.php
在我的主题中:
<body id="page-<?php echo $post->post_name;?>" <?php body_class(); ?> data-site-url="<?php echo site_url(); ?>">
wp_head()
在第36行之前调用。
我已经查看了网站每个页面的输出源$post->post_name
, body_class()
, 和site_url()
全部的echo
正确地
我的假设是错误与$post->post_name
, 因为它是在谈论对象的属性。我需要申报吗global $post
首先还是别的什么?
正在查看debug.log
我不知道这个错误是在每一页上发生,还是只在某些页面上发生。
作为旁注,我计划调整id
也可以解释分类法,但一旦我弄清楚是什么导致了这个错误,我就可以把它整理出来。
感谢您提供的任何帮助。
SO网友:cenk
对于您想要实现的目标,有一个更好的方法,这个答案与您遇到的php错误无关。你需要这些类来设计你的网站,对吗?
在函数中输入以下代码。php
// A better body class
function condensed_body_class($classes) {
global $post;
// add a class for the name of the page - later might want to remove the auto generated pageid class which isn\'t very useful
if( is_page()) {
$pn = $post->post_name;
$classes[] = "page_".$pn;
}
if( !is_page() ) {
$pn = $post->post_name;
$classes[] = "post_".$pn;
}
if ( $post && $post->post_parent ) {
// add a class for the parent page name
$post_parent = get_post($post->post_parent);
$parentSlug = $post_parent->post_name;
if ( is_page() && $post->post_parent ) {
$classes[] = "parent_".$parentSlug;
}
}
// add class for the name of the custom template used (if any)
$temp = get_page_template();
if ( $temp != null ) {
$path = pathinfo($temp);
$tmp = $path[\'filename\'] . "." . $path[\'extension\'];
$tn= str_replace(".php", "", $tmp);
$classes[] = "template_".$tn;
}
return $classes;
}
/* a better body class */
add_filter( \'body_class\', \'condensed_body_class\' );
在你需要身体类的地方,放上这个:
<body <?php body_class(); ?>>
您将看到,将打印出许多有用的类信息。
祝你好运