如何在Wordpress中应用过滤器之前修改页面内容?

时间:2011-11-24 02:56:52

标签: php wordpress add-filter

我需要更改页面内容源,而不是从数据库获取,而是从外部文件获取。 我决定在页面中添加一个自定义字段'staticfile',我想要更改源代码。然后我写了迷你插件并添加了过滤器“the_content”:

add_filter('the_content', 'static_content');
function static_content($content) {
    $custom_fields = get_post_custom();
    $my_custom_field = $custom_fields['staticfile'];
    $upload_dir = wp_upload_dir();
    foreach ($my_custom_field as $value) {
        if ($value) {
            $file = file_get_contents($upload_dir['basedir'] . '/staticpages/' . $value);
            return $file;
        }
    }
    return $content;
}

除了一件事之外它工作得很好。我在输出上获得的html代码未被过滤。例如,添加了其他插件的短代码不起作用。我试着写:

return apply_filters('the_content', $file);

但它打破了所有输出(可能它会循环代码)。 有没有办法通过应用过滤器来更改页面源?

1 个答案:

答案 0 :(得分:0)

我认为您想要应用优先级参数... add_filter(' the_content',' static_content',20); 插件的默认值为10,因此20表示它运行的优先级较低。尝试查看要设置的内容,因为它设置得越高,然后所有插件都可以在使用过滤器处理之前对其进行修改。 认为这就是你想要的。