不要让帖子标题下面的div显示在摘录中

时间:2012-10-21 14:21:35

标签: css wordpress

我希望在帖子标题下面直接设置一个div设置,它左侧浮动并包含一个adxse 300x250块,然后在右侧包含帖子内容。所有这些在查看单个帖子时都能正常工作......但是当我转到我博客的主页面时,它显示了所有的帖子摘录,它会在那里显示我不想要的div。

我尝试使用CSS进行纠正,只是尝试专门定位主页上的div并将其设置为none(即.post_content.myAd {display:none; ...}),然后使用它通过定位特定的一个(即.single.myAd {display:inline; ...}可见,因为我的广告div'myAd'位于主页上的.post_content内,但在单个博客帖子中的.single内。)< / p>

这是我的全部css:

.single.aboveVideoAd{
position: relative;
display:inline;
float: left;
width: 300px;  
height: 250px; 
margin-right: 15px; 
margin-bottom: 15px;
}

.post_content.aboveVideoAd{
display:none;
}

根据要求,这是我的index.php循环的html(显示摘录)和单个帖子的single.php:

index.php:http://pastebin.com/62gQfh2h

single.php:http://pastebin.com/x18G56CA

有什么想法吗?我已经看到很多网站在帖子下面都有广告块并没有这个问题,所以我觉得应该有一个更简单的解决方案,除了不得不乱用css。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一个将从文本中删除标记及其内容的函数:http://se2.php.net/manual/en/function.strip-tags.php#86964

为了方便起见,我将重现它:

<?php 
function strip_tags_content($text, $tags = '', $invert = FALSE) { 

  preg_match_all('/<(.+?)[\s]*\/?[\s]*>/si', trim($tags), $tags); 
  $tags = array_unique($tags[1]); 

  if(is_array($tags) AND count($tags) > 0) { 
    if($invert == FALSE) { 
      return preg_replace('@<(?!(?:'. implode('|', $tags) .')\b)(\w+)\b.*?>.*?</\1>@si', '', $text); 
    } 
    else { 
      return preg_replace('@<('. implode('|', $tags) .')\b.*?>.*?</\1>@si', '', $text); 
    } 
  } 
  elseif($invert == FALSE) { 
    return preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text); 
  } 
  return $text; 
} 
?>

这可以绑定到get_excerpt,

add_filter( 'get_the_excerpt', function( $content ) {
    return strip_tags_content( $content, '<div>', TRUE );
});

我还没有测试过这段代码。