如何在这个wordpress插件中运行函数而不是文本?

时间:2013-12-19 05:44:17

标签: php wordpress wordpress-plugin

这是一个简单的代码,显示单个帖子页面上第二段之后的Adsense或任何广告代码。但我想知道如何修改它以便它可以运行动态函数。

//Insert ads after second paragraph of single post content.

add_filter( 'the_content', 'prefix_insert_post_ads' );

function prefix_insert_post_ads( $content ) {

    $ad_code = '<div>Ads code goes here</div>';

    if ( is_single() && ! is_admin() ) {
        return prefix_insert_after_paragraph( $ad_code, 2, $content );
    }

    return $content;
}

// Parent Function that makes the magic happen

function prefix_insert_after_paragraph( $insertion, $paragraph_id, $content ) {
    $closing_p = '</p>';
    $paragraphs = explode( $closing_p, $content );
    foreach ($paragraphs as $index => $paragraph) {

        if ( trim( $paragraph ) ) {
            $paragraphs[$index] .= $closing_p;
        }

        if ( $paragraph_id == $index + 1 ) {
            $paragraphs[$index] .= $insertion;
        }
    }

    return implode( '', $paragraphs );
}

实际上我想替换

$ad_code = '<div>Ads code goes here</div>';

 $ad_code = '<?php if(function_exists('echo_ald_crp')) echo_ald_crp(); ?>'; 

有办法吗?

1 个答案:

答案 0 :(得分:0)

好吧,你不能将PHP分配给string var并期望它执行。您可以使用其中的代码创建一个函数,让它返回一些内容,然后将该变量设置为等于函数调用。像这样:

function output_function() {
    //do something here
    return $thing_you_want_to_return;
}

function prefix_insert_post_ads( $content ) {

    $ad_code = output_function();

    if ( is_single() && ! is_admin() ) {
        return prefix_insert_after_paragraph( $ad_code, 2, $content );
    }

    return $content;
}

这样,当分配变量时,它将运行您的函数并返回您希望用prefix_insert_after_paragraph()回显的内容。