我有个问题。我想在发布帖子时获得特色图片的url。
它在我更新帖子时有效,但在第一次发布时无效,因为此时元数据似乎没有存储在数据库中。即使我使用"wp_insert_post"而不是"save_post",它也不起作用。
在我的functions.php中,我用检查新的/更新的帖子
add_action( 'save_post', 'my_function' );
当一篇帖子更新时,我使用读取了特色图片的url
$image_url = get_post_meta( get_post_meta( $post_id, "_thumbnail_id", true ), "_wp_attached_file", true );
你能帮我吗?
好吧,如果你想从你发布的帖子中获取附件,save_post是不可行的。
尝试publish_post
当publish_post被激发时,该帖子及其附件已经存在于数据库中,并且可以访问。
save_post
操作挂钩在数据保存到数据库(wordpress codex)后运行,因此应该这样做,它适用于发布后和更新后。代码中注释了几个有用的链接。
// http://codex.wordpress.org/Plugin_API/Action_Reference/save_post
add_action( 'save_post', function ( $post_id ) {
if ( wp_is_post_revision( $post_id ) ) return;
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
// save_post action is executed on all post actions like publish, trash, auto-draft, etc.
// http://codex.wordpress.org/Post_Status_Transitions
if ( get_post_status( $post_id ) == 'publish' ) {
// http://codex.wordpress.org/Function_Reference/get_post_thumbnail_id
$thumb_id = get_post_thumbnail_id( $post_id );
// http://codex.wordpress.org/Function_Reference/wp_get_attachment_image_src
$thumb_url = wp_get_attachment_image_src( $thumb_id, 'full' );
$thumb_url = $thumb_url ? $thumb_url[0] : false;
}
});