清理/过滤通过XML RPC插入到发布内容的HTML

时间:2012-12-12 作者:ragulka

一个使用XML RPC在我的网站上发布一些帖子的外部服务将一些不需要的CSS样式和HTML添加到帖子内容中。

我想使用基于DOMDocument和DOMXPath构建的HTML清理器来清理它。

我唯一的问题是,如何在post\\u内容实际保存到数据库之前访问它,以便在其上运行我的清理程序?也许我可以使用一个过滤器/操作?

1 个回复
SO网友:Andy Adams

save_post Codex page:

save\\u post是在创建或更新帖子或页面时触发的操作,可以通过导入、帖子/页面编辑表单、xmlrpc或电子邮件发布。

所以,如果你save_post 您可以在保存之前运行筛选器:

添加操作(“save\\u post”、“wpse\\u 75871\\u save\\u post”);

function wpse_75871_save_post( $post_id ) {

    if ( defined( \'XMLRPC_REQUEST\' ) && XMLRPC_REQUEST ) {
        // Avoid infinite loops
        remove_action( \'save_post\', \'wpse_75871_save_post\' );

        $post = get_post( $post_id );

        $your_filtered_content = get_your_filtered_content( $post->post_content );

        wp_update_post(
            array(
                \'ID\' => $post_id, 
                \'post_content\' => $your_filtered_content 
            )
        );

        add_action( \'save_post\', \'wpse_75871_save_post\' );
    }
}
您可能需要针对您的具体情况进行其他检查。如果你有任何问题,请告诉我!

结束

相关推荐

Apply_Filters()和_Excerpt提供了意外的结果

我觉得我一定错过了一些显而易见的东西,但我似乎无法让WordPress合作。我正在用一个函数生成Facebook OG标签。除了摘录,一切都很好。自get_the_excerpt($post->ID), 有没有其他方法可以创建摘录而不必创建一个全新的循环?我觉得这太过分了。我的第一反应是apply_filters():$description = apply_filters(\'the_excerpt\', get_post($post->ID)->post_content);