MEDIA_SIDELOAD_IMAGE是否生成空白?

时间:2011-06-09 作者:FLX

我正在创建一个自定义的帖子表单,该表单将获取外部图像并将其上载到媒体库,然后将其附加到该帖子。这应该可以通过使用media\\u sideload\\u image实现,但我得到的是一个空白页面,而不是正常工作,也没有错误。我的代码:

// Add the content of the form to $post as an array
        $new_post = array(
            \'post_title\'    => $title,
            \'post_content\'  => $description,
            \'tags_input\'    => $tags,
            \'post_type\'     => \'link_submit\',
            \'post_status\'   => \'publish\'
        );
        //save the new post and return its ID
        if ($stop == false){
            $pid = wp_insert_post($new_post);
            update_post_meta($pid,\'Link\',$link,true);
            update_post_meta($pid,\'Type\',$type,true);
                    // attach image
            set_time_limit(300);
            $upload = media_sideload_image($link, $pid, "test");
            if ( is_wp_error( $upload ) ){
            die( \'Nope\' );
            }

            $link = get_permalink( $pid );
            wp_redirect( $link."?posted" );
            die();
        }   
想法?

谢谢,丹尼斯

编辑:新代码:

if (is_page(\'Upp\')){
    require_once(ABSPATH . \'wp-admin/includes/file.php\');
    require_once(ABSPATH . \'wp-admin/includes/media.php\');
    set_time_limit(300);
    $upload = media_sideload_image("http://29.media.tumblr.com/tumblr_lmp1tbiYwh1qzlfumo1_500.jpg", "202", "my description");
    die ( $upload );
}

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

首先,颠倒条件中的顺序。您应该使用if ( false == $stop ) { ... 它被称为“a”;尤达有条件“;并且在WP代码的最佳实践列表中。

其次media_sideload_image 如果出现故障,则不会返回WP错误对象。如果失败,它将返回传入的帖子的ID($pid 在您的情况下)。如果成功,它将返回HTML以呈现刚刚插入的图像。

我建议你把$upload 看看里面有什么,看看事情是否成功。所以if(is_wp_error()) 密码将其替换为wp_die( $upload ) 看看结果如何。如果它是一个id,那么您的系统有问题,您需要调查服务器无法下载图像的原因。如果它是图像的HTML标记,那么正在添加图像,您就可以开始了。

作为参考,请查看实际media_sideload_image() 中的函数/wp-admin/includes/media.php 569线附近。

编辑:2011年6月20日,我深入研究了代码,并开始遍历我在WordPress代码中设置的断点,这就是我最终发现问题的地方。

在处理图像时,media_sideload_image() 最终会打电话给media_handle_image(), 在同一个文件中。这里没有问题。但另一个函数调用wp_read_image_metadata(), 这是在另一个文件中定义的函数,我们还没有包括它!

不幸的是,对于我们来说(显然还没有被发现,因为这段代码违背了WP的最佳实践),有一个@ 该函数调用之前的符号。这个@ PHP中的符号将消除解析器抛出的任何错误,因此PHP会看到一个;功能未定义“;错误并停止。。。给了我们一页空白,让我们挠头。

因此,将以下行添加到require_once()s将实际加载并插入图像:

require_once(ABSPATH . \'wp-admin/includes/image.php\');
唯一让我头疼的是你的代码post_type=link_post ... 我没有定义那篇文章的类型,所以我在兜圈子,想弄明白为什么wp_insert_post() 不起作用。。。是的,我现在有100“;“测试桩”;我的数据库中的s:-)

结束

相关推荐

404从wp-Content/Uploads/获取图像时

我在获取图像时获得404状态,http仍然包含该图像。图像显示在浏览器中,但404代码中断了一些应用程序。对wp内容/上载/的调用被重定向到。htaccess:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\\.php$ - [L] RewriteRule (.*) /index.php?getfile=$1 [L] </IfModule>&