使用php从页面分离图像

时间:2017-09-09 作者:tzeldin88

我想从当前附加到的页面中分离/取消附加图像——使用PHP,而不是媒体库中的“分离”链接。

我在/wp admin/includes/media.php#3164中找到了这个:

$result = $wpdb->query( "UPDATE $wpdb->posts SET post_parent = 0 WHERE post_type = \'attachment\' AND ID IN ( $ids_string )" );
所以我想我可以在自己的PHP中使用它,代替$ids_string 具有要删除的附件的ID。

有更好的方法吗?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

没有核心(4.8.1)功能,如detach_post()wp_update_attachment() 但我们可以使用wp_update_post() 要分离附件,请执行以下操作:

$result = wp_update_post( [
    \'ID\'          => $attachment_id,
    \'post_parent\' => 0,               // detach
] );  

if( is_wp_error( $result ) ) {
    // error
} else {
    // success
}
我们还可以创建助手函数(未测试):

/**
 * WPSE-279554: Detach Post
 *
 * @param int   $post_id Post ID
 * @return bool $return If post was successfully detached
 */
function wpse_detach_post( $post_id )
{
    // Validate input - we only want positive integers
    if( ! is_int( $post_id ) || $post_id < 1 ) 
        return false;

    $result = wp_update_post( [
        \'ID\'          => $post_id,
        \'post_parent\' => 0,              // detach
    ] ); 

    return ! is_wp_error( $result );
} 
用法示例:

if( wpse_detach_post( $post_id ) ) {
    // success
} else {
    // error
}

结束

相关推荐

how to edit attachments?

在将例如文件附加到帖子时,如何在事后编辑/删除它们?在帖子编辑器中找不到任何内容。谢谢