如何在设置为GLOBAL时从特定页面ID中排除快捷代码

时间:2017-03-26 作者:Archi25

此时,我正在使用下面的代码,为所有帖子和页面上的表添加一个短代码,但我想排除少数页面和任何带有特定标记的帖子。(例如页面id 10、20和标签id 30)

我对这一切都很陌生,我还在学习。

function my_shortcode_to_a_post( $content ) {
  global $post;
  if( ! $post instanceof WP_Post ) return $content;
  switch( $post->post_type ) {
    case \'post\':
      return $content . \'[table id=1 /]\';
    case \'page\':
      return $content . \'[table id=1 /]\';
    default:
      return $content;
  }
}

add_filter( \'the_content\', \'my_shortcode_to_a_post\' );
提前谢谢你的帮助。

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

请试试这个,告诉我结果

function my_shortcode_to_a_post( $content ) {

  global $post;
  $disabled_post_ids = array(\'20\', \'31\', \'35\');
  $disabled_tag_ids = array(\'5\', \'19\', \'25\');

  $current_post_id = get_the_ID(); // try setting it to $post->ID; if it doesn\'t work for some reason
  if(in_array($current_post_id, $disabled_post_ids)) {
    return $content;
  }

  $current_post_tags = get_the_tags($current_post_id);

  if($current_post_tags){
    $tags_arr = array();
    foreach ($current_post_tags as $single_tag) {
      $tag_id = $single_tag->term_id;
      if(in_array($tag_id, $disabled_tag_ids)) {
        return $content;
      }
    }
  }

  switch( $post->post_type ) {
    case \'post\':
      return $content . \'[table id=1 /]\';
    case \'page\':
      return $content . \'[table id=1 /]\';
    default:
      return $content;
  }
}

add_filter( \'the_content\', \'my_shortcode_to_a_post\' );

相关推荐

Geoip shortcodes in comments

我想知道如何从geoip插件添加国家/地区短代码(https://pl.wordpress.org/plugins/geoip-detect/) 输入注释字段。[geoip\\u detect2 property=“country”]据我所知,注释字段必须是所见即所得字段(默认情况下不是文本)。还有其他方法吗?通过自定义php函数或其他方式?你好,Michal