我离得很近,我能感觉到。我正试图让一个广告块显示后,说2段。目前,我在函数中使用以下代码。php将adblock放在最后一段之前。
我一生都找不到正确的代码来完成这项工作。
function ads_added_above_last_p($text) {
if( is_single() ) :
$ads_text = \'<div class="wpselect_middle_content">My Ad Code Here</div>\';
if($pos1 = strrpos($text, \'<p>\')){
$text1 = substr($text, 0, $pos1);
$text2 = substr($text, $pos1);
$text = $text1 . $ads_text . $text2;
}
endif;
return $text;
}
add_filter(\'the_content\', \'ads_added_above_last_p\');
如果我使用第二个$文本字符串并放置$pos2,它将非常有效,但它会复制帖子中的所有文本。
任何帮助都将不胜感激。
最合适的回答,由SO网友:epilektric 整理而成
我找到了explode()
在尝试断开字符串时很有用。这段代码创建一个段落块数组,在两个段落后插入新块,并将其连接回字符串以供输出。
function insert_ad_block( $text ) {
if ( is_single() ) :
$ads_text = \'<div class="wpselect_middle_content">My Ad Code Here</div>\';
$split_by = "\\n";
$insert_after = 2; //number of paragraphs
// make array of paragraphs
$paragraphs = explode( $split_by, $text);
// if array elements are less than $insert_after set the insert point at the end
$len = count( $paragraphs );
if ( $len < $insert_after ) $insert_after = $len;
// insert $ads_text into the array at the specified point
array_splice( $paragraphs, $insert_after, 0, $ads_text );
// loop through array and build string for output
foreach( $paragraphs as $paragraph ) {
$new_text .= $paragraph;
}
return $new_text;
endif;
return $text;
}
add_filter(\'the_content\', \'insert_ad_block\');