在_Content();中途挂接?

时间:2011-12-20 作者:Tom

基本上,我想添加一个函数,该函数在\\u content()中执行一半;

我想在我所有内容的中间添加一个消息/广告块,而不必进入每个页面并添加块。

这可能吗?

2 个回复
SO网友:Chris_O

使用此功能ad_content() 代替the_content() 在模板中。

function ad_content() {
$content = apply_filters ( \'the_content\', get_the_content () );
$content = explode ( "</p>", $content );
$half_way = ( count($content) / 2);
    for ( $i = 0; $i < count( $content ); $i ++ ) {
        if ( $i == $half_way ) {
            echo \'YOUR_AD_CODE\';

        }
        echo $content[$i] . "</p>";
    }
}

SO网友:Brooke.

当然,这是可能的,您只需要编写一个函数来查找内容的中间部分,然后广告您的块。像这样的

function wpse_37015(){

//get the content   
$content= get_the_content(); //get the content as a variable

// find the middle
$content_length= STRLEN($content);
$halfway_mark = ($content_length/ 2);

// clip off the first half
$firsthalf = SUBSTR($content, 0, $halfway_mark);

// find the last \'<br>\' in the first half
$end_mark = STRRPOS($firsthalf, \'<br>\');

// add in the adblob at the position found above

return SUBSTR($content, 0, $end_mark) . "<p> YOUR AD HERE p>" . SUBSTR($content, $end_mark); 
}

add_filter(\'the_content\', \'wpse_37015\');
这是完全未经测试,可能需要返工我得到的代码,以找到中间here.

Edit: 正如OneTrickPoney指出的,我们需要检查HTML标记,一种方法可能是使用php的strip_tags() function . 并在第一次内容调用后添加如下内容:

$content = strip_tags($content) //remove html tags
问题是将标签添加回末尾。

结束

相关推荐