一个使用XML RPC在我的网站上发布一些帖子的外部服务将一些不需要的CSS样式和HTML添加到帖子内容中。
我想使用基于DOMDocument和DOMXPath构建的HTML清理器来清理它。
我唯一的问题是,如何在post\\u内容实际保存到数据库之前访问它,以便在其上运行我的清理程序?也许我可以使用一个过滤器/操作?
一个使用XML RPC在我的网站上发布一些帖子的外部服务将一些不需要的CSS样式和HTML添加到帖子内容中。
我想使用基于DOMDocument和DOMXPath构建的HTML清理器来清理它。
我唯一的问题是,如何在post\\u内容实际保存到数据库之前访问它,以便在其上运行我的清理程序?也许我可以使用一个过滤器/操作?
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\' );
}
}
您可能需要针对您的具体情况进行其他检查。如果你有任何问题,请告诉我!我觉得我一定错过了一些显而易见的东西,但我似乎无法让WordPress合作。我正在用一个函数生成Facebook OG标签。除了摘录,一切都很好。自get_the_excerpt($post->ID), 有没有其他方法可以创建摘录而不必创建一个全新的循环?我觉得这太过分了。我的第一反应是apply_filters():$description = apply_filters(\'the_excerpt\', get_post($post->ID)->post_content);