WordPress 文章中执行 php

由于每日添加 VOA 的资源,我的 MP3 资源 的页面将会经常的更新,数据库中会存下很多没必要的修订版本,所以这个页面我想直接用 php 去做。

我的网站是基于 Yii 的,所以用 Yii 的 mvc 来做页面可以非常方便,整合的方法可以看 《Yii 整合 WordPress》。但是这样就不能有 WordPress 的评论功能了,所以还是想使用 WordPress 的文章或者页面。

让文章执行 php 的方法有很多,可以使用插件或者用 Shortcode ,但都显得麻烦而且累赘,而我的需求也并不一定要在文章中嵌入代码。那么就换一个思路来:在文章后面加入一个 php 页面。

add_filter( 'the_content', 'the_content_filter_extra_page' );

function the_content_filter_extra_page($content) 
{
    global $post;
    $viewFile = get_post_meta($post->ID, 'extra-page', true);
    if($viewFile !== '')
    {
        $viewFile = ABSPATH . $viewFile;
        ob_start();
        ob_implicit_flush(false);
        require($viewFile);
        return $content . ob_get_clean();
    }
    else
    {
        return $content;    
    }
    
}

在主题的 functions.php 插入上述代码,为文章添加一个自定义栏目,关键字设为 “extra-page”,设置要执行的 php 文件路径,相对于 wordpress 的根目录。
这里使用了 ob_start 和 ob_get_clean 得到 php 的执行结果并添加到文章内容的后面。

以后对这个页面的修改,直接更改对应的 php 文件并上传即可。



发表评论?

0 条评论。

发表评论