我在我的网站上使用了一个帖子爬虫,它可以从其他网站上提取文章,并自动将它们发布到我的网站上。在这个过程中,它检查是否有任何视频嵌入代码;如果存在,爬虫程序会在帖子中创建一个自定义字段“video\\u code”,并在值中添加视频嵌入代码。
我编写了一个函数,用于检查爬网帖子中名为“video\\u code”的特定自定义字段。如果该自定义字段存在,它会将post格式从标准更改为视频。
function check_meta( $post_id, $post, $update ) {
$post_type = get_post_type($post_id);
if ( "post" != $post_type ) return;
if ( isset( $_POST[\'video_code\'] ) ) {
set_post_format( $post_id, \'video\' );
}
}
add_action( \'save_post\', \'check_meta\', 999, 3 );
只有当我编辑帖子并手动单击更新按钮时,上述功能才起作用,原因是在该功能检查帖子元数据时,元数据不存在。保存帖子后,我如何运行上述函数,以确保元数据存在,并且我的函数可以检查元数据并更改帖子格式。
更新:我联系了插件作者,虽然他不能帮我写代码,但他确实给了我一些关于如何实现这一点的观点。
他的回答是:
在检查帖子的元数据时,元数据不存在。该插件具有可以使用的过滤器和操作。你可以看到https://pastebin.com/jLmnp2F8 文件的insertPostData()方法。您可以使用1个筛选器和2个操作。例如,可以使用wpcc/post/after\\u保存操作。操作的第一个参数提供了一个PostData实例,您可以从中检索自定义元值。看见https://pastebin.com/u8t2cf4P 文件的getCustomMeta()方法。它将自定义元作为键值对提供。该操作还提供post ID作为参数。对于参数及其描述,您可以看到insertPostData()方法。