0

我正在尝试调用 media_sideload_image 作为从 XML 提要导入的一部分,但我一点运气都没有 - 它目前在一个目录中(localhost/wordpressdirectory/wordpress/wp-admin/imports)但我一直没有这样尝试联系任何所需文件时出现目录错误。

请参阅下面的代码,该代码基本上是从 media_sideload_image 的 WP 指南中复制的:

<?php 
define('ABSPATH', dirname(__FILE__));

echo ABSPATH . '\wp-admin\includes\plugin.php';
require_once( ABSPATH . '\wp-admin\includes\plugin.php');
require_once( ABSPATH . '\wp-admin\includes\media.php');
require_once( ABSPATH . '\wp-admin\includes\file.php');
require_once( ABSPATH . '\wp-admin\includes\image.php');

$url = "http://s.wordpress.org/style/images/wp3-logo.png";
$post_id = 1;
$desc = "The WordPress Logo";

$image = media_sideload_image($url, $post_id, $desc);
?>

我已经回应了这个,它提出了这个不是有效的文件路径:C:\wamp\www\wordpressdirectory\wordpress\wp-admin\imports\wp-admin\includes\plugin.php

由于 abspath 似乎返回了不正确的值,我如何在理想情况下在 localhost 中解决此问题,而无需硬引用对其物理位置的任何要求?

4

2 回答 2

0

您在上面的插件中定义了 ABSPATH,因此 ABSPATH = 'C:\wamp\www\wordpressdirectory\wordpress\wp-admin\imports' 因为那是您的文件所在的位置。使用您发布的相同代码,尝试上一个目录在你的路径中包括这样的:

<?php 
define('ABSPATH', dirname(__FILE__));

echo ABSPATH . '\..\includes\plugin.php';
require_once( ABSPATH . '\..\includes\plugin.php');
require_once( ABSPATH . '\..\includes\media.php');
require_once( ABSPATH . '\..\includes\file.php');
require_once( ABSPATH . '\..\includes\image.php');

$url = "http://s.wordpress.org/style/images/wp3-logo.png";
$post_id = 1;
$desc = "The WordPress Logo";

$image = media_sideload_image($url, $post_id, $desc);
?>
于 2013-07-30T02:27:14.117 回答
0

ABSPATH 已经在 wp_load.php 文件中被 wordpress 定义了,一般是到 public_html 或 www 目录的路径,我认为你不需要重新定义它,或者使用 is_defined 来检查它是否被定义。

将 ABSPATH 定义到当前目录是不必要的,这会使事情复杂化..

require_once( ABSPATH . '/wp-admin/includes/plugin.php');
require_once( ABSPATH . '/wp-admin/includes/media.php');
require_once( ABSPATH . '/wp-admin/includes/file.php');
require_once( ABSPATH . '/wp-admin/includes/image.php');

这应该可以工作..也用正斜杠替换了反斜杠。这就是我的工作方式,

于 2014-01-14T11:49:21.003 回答