当POST包含特定快捷码时添加Body类

时间:2014-04-15 作者:l2aelba

Simple shortcode function :

function my_shortcode_function($atts,$content=null){
  // Do something
  return $content;
}
add_shortcode(\'my_shortcode\',\'my_shortcode_function\');
我想知道当用户在内容中使用此短代码时,如何添加更多额外的body类。

I can\'t do something like :

function my_shortcode_function($atts,$content=null){
  // Do something
  add_filter(\'body_class\',\'my_body_class\');
  return $content;
}
function my_body_class($classes) {
   $classes[] = \'foo\';
   return $classes;
}
add_shortcode(\'my_shortcode\',\'my_shortcode_function\');
有什么想法吗?

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

我正在我的一个插件中执行类似的操作:

function my_body_class( $c ) {

    global $post;

    if( isset($post->post_content) && has_shortcode( $post->post_content, \'your-shortcode\' ) ) {
        $c[] = \'your-class\';
    }
    return $c;
}
add_filter( \'body_class\', \'my_body_class\' );
我不确定这是否真的有必要,但我现在可能也无法删除它。死亡医生是对的,你应该考虑你是否真的需要这样做。

结束

相关推荐

Gist shortcode is not working

我刚安装了一个全新的Wordpress用于测试,因为我打算刷新我当前的网站。我的一个要求是能够嵌入Gist中的代码。在Wordpress文档之后,较新版本附带了Gist的特定短代码:Gist Shortcode问题是它根本不起作用。我试着简单地将url粘贴在一行上,或者将其包裹在[要点]标签上,但没有任何效果。url只是在帖子中显示为原始文本。我知道有些插件提供了相同的功能,但我真的希望使用Wordpress的内置功能。我的网站已自动托管并安装在Azure网站上,运行PHP 5.4和Wordpress 3