从数据库获取帖子后立即全局筛选帖子中的内容

时间:2016-04-19 作者:e4rthdog

每当我更新或创建特定自定义帖子类型时,我都会对其内容进行加密。这很好用。

有没有办法从后端或前端全局解密所有WordPress读取操作的内容?

否则,我将不得不在需要时在代码中的任何地方使用解密函数。

我不能使用the_content 筛选,因为它仅在循环内工作。

1 个回复
SO网友:dan9vu

在…内get_posts() 的方法WP_Query 类(第3769行),您将发现此筛选器:

$this->posts = apply_filters_ref_array( \'the_posts\', array( $this->posts, &$this ) );
这是第一个可以用来修改后端和前端查询帖子的钩子。

$this->posts 是一个查询帖子的数组,因此很容易根据您的目的修改每个帖子的内容。

例如,我们要更改第一篇帖子的内容:

function wpse_modify_post_content($args) {

    $args[0]->post_content = \'This filter filters the content of a post right after it is fetched from the database\';

    return $args;

}
add_filter(\'the_posts\', \'wpse_modify_post_content\');
对于特定的编辑屏幕,您可以使用content_edit_pre 滤器此过滤器接受两个参数。

示例:

function wpse_content_edit_pre($content, $post_id) {

    $content = \'This filter filters the content of a post which being loaded for editting.\';

    return $content;

}
add_filter(\'content_edit_pre\', \'wpse_content_edit_pre\', 10, 2);
I recommend you to take a look at Filter Reference.

相关推荐