我希望在帖子标题下面直接设置一个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。
谢谢!
答案 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 );
});
我还没有测试过这段代码。