如何包含基于POST(in循环)插件的css类?

时间:2017-07-01 作者:Gore

我使用这个函数从slug中检索body和single post类。

add_filter( \'post_class\', \'fl_pages_bodyclass\' );
add_filter(\'body_class\',\'fl_pages_bodyclass\');
function fl_pages_bodyclass($classes) {
    if (is_page() || is_single() ) {
        // get page slug
        global $post;
        $slug = get_post( $post )->post_name;

        // add slug to $classes array
        $classes[] = $slug;
        // return the $classes array
        return $classes;
    } else { 
        return $classes;
    }
} 
这个函数工作得很好,但我希望在循环中包含帖子。我已尝试删除if(is_ ..). 然后它就开始工作了,但404页上出现了一个问题-我遇到了“尝试获取非对象的属性”错误-所以我尝试通过以下方式排除404页

if (is_404() ) {
     return $classes;
     } 
但它不起作用。我做错了什么?或者如何在循环中包含帖子?

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

您得到的错误是由$slug = get_post( $post )->post_name; 因为没有post_name 在404页上。因此,为了防止此错误,您必须以在404页上调用函数时不会到达此行的方式来构造函数。像这样:

add_filter (\'post_class\', \'fl_pages_bodyclass\');
add_filter (\'body_class\', \'fl_pages_bodyclass\');
function fl_pages_bodyclass ($classes) { 
  global $post;
  if (!is_404()) {
    $slug = get_post($post)->post_name; 
    $classes[] = $slug;
    }
  return $classes;
  }

结束