如何只将页面ID显示为Body类?

时间:2015-12-11 作者:N00b

有人称之为轻度强迫症,也有人称之为安全风险。我只是不喜欢它把所有东西都放在那里,尤其是模板名称。

如何只分配页面id或更好的-slug?

注意,这是在页眉模板中,它应该输出当前页面的id/slug。

我检查过的所有“专业”的高质量WP网站都没有这种混乱。

<body <?php body_class(); ?>>

          |
          v

<body class="home page page-id-495 page-template page-template-template-home-slideshow page-template-template-home-slideshow-php logged-in">

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

老实说,这是源代码。唯一看到它的人是您和其他开发人员。随便访问你的网站的任何人都不会知道或理解这些东西,所以把它放在那里真的没有坏处buttttbody_class:

function custom_body_class( $classes ) {
    global $post;

    if( isset( $post ) && is_object( $post ) ) {
        $classes = array( "page-{$post->ID}" );
    }

    return $classes;
}
add_filter( \'body_class\', \'custom_body_class\' );

SO网友:s_ha_dum

“有些人”可能会把这称为所有的事情,但这并不意味着“他们”是正确的。

作为一个“页面加载”问题,这些类是微不足道的。他们在页面上添加的字符很少。

作为一个安全问题,也微不足道。大多数都没有任何安全后果,所以这是一个“页面”,而那些只有很小的后果,而且只有在自定义模板写得非常非常糟糕的情况下才有安全后果。此外,大多数模板名称可以通过考虑template hierarchy 内置于Core中,因此删除这些类对您的好处微乎其微。你所拥有的与"premature optimization".

您还应该知道,删除这些类可能会破坏主题或插件提供的格式,因为这些主题或插件可以而且应该能够依赖于核心类。

您也正在删除admin-barlogged-in 类,这可能会影响Core 功能。

然而body_class 过滤器允许您执行所需操作。以下内容将非常积极地删除除postid-{ID}

function body_class_wpse_211556($classes) {
  $qobj = get_queried_object();
  //   var_dump($qobj); die;
  $classes = array();
  if (!empty($qobj) && is_a($qobj,\'wp_post\')) {
    $classes[] =\'postid-\'.$qobj->ID;
  }
  return $classes;
}
add_filter(\'body_class\',\'body_class_wpse_211556\',PHP_INT_MAX);

SO网友:Megan Rose

下面是如何过滤body\\u类()。这将仅在您有页面slug的情况下使用它(以及通过函数中的附加过滤器添加的任何类,如自定义支持)。

    function wpse211556_body_classes($classes) {
            unset($classes);
            $slug = strtolower(str_replace(\' \', \'-\', trim(get_bloginfo(\'name\'))));
            $classes[] = $slug;
            return $classes;
    }
    add_filter(\'body_class\', \'wpse211556_body_classes\');
参考号:https://codex.wordpress.org/Plugin_API/Filter_Reference/body_class

相关推荐

如何在WordPress unctions.php中将短代码值传递到Head

我正在尝试为wordpress帖子上的图表创建一个快捷代码。到目前为止,我已经使用了短代码,我可以看到短代码值正在被传递,但我需要知道的是如何将这些值传递到Google图表,以便正确工作。以下是我目前掌握的代码:function chart_shortcode($atts) { $a = shortcode_atts( array( \'value1\' => \'\', \'value2\' => \'\', \'value