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