首先,颠倒条件中的顺序。您应该使用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:-)