Сомневаюсь, что вам все еще нужен ответ, так как этот вопрос довольно старый, но здесь он предназначен для дальнейшего использования:
Ошибка, которую вы получаете, - это возвращение wp_load_image
, которое используется wp_crop_image
.wp_load_image
использует функцию php file_exists
, которая должна указывать путь к файлу без домена.
Так что
$crop = wp_crop_image( $file, $dimensions[0], $dimensions[1], 0, 0, 250, 280,
null, "wp-content/uploads/2010/09/squares-wide.jpeg" );
сработало бы.
AnПомимо wp_upload_bits
не только загружает файл (ы) для вас, он также возвращает URL загруженного файла.
Если вы вызываете wp_upload_bits
, например, так (где "file" - это имя формыinput):
if ($_FILES["file"]["name"]!="") {
$uploaded_file = wp_upload_bits($_FILES["file"]["name"], null,
file_get_contents($_FILES["file"]["tmp_name"]));
}
Следовательно, $uploaded_file['url']
эквивалентно $dir."/image.jpg"
.В вышеупомянутой культуре вы могли бы использовать подстроку $uploaded_file['url']
.
Конкретный пример:
С http://site.local/wp-content/uploads/2010/09/squares-wide.jpeg
это будет работать:
$dir = dirname($file);
$dir_substr = substr($dir, 18)
$crop = wp_crop_image( $file, $dimensions[0], $dimensions[1], 0, 0, 250, 280,
null, $dir."/squares-wide.jpeg" );
Конечно, вы также хотите, чтобы имя файла было динамическим, поэтому я бы назвал wp_uload_bits
, как предложено выше (если оно не приходит из поля формы, но поле WP Custom вызывает его, как вы делаете сейчас,важная часть - $uploaded_file = wp_upload_bits(...)
, чтобы сохранить возврат wp_upload_bits
в переменной для последующего использования), а затем выполнить
$file_uri = substr($uploaded_file['url'], 18);
$crop = wp_crop_image( $file, $dimensions[0], $dimensions[1], 0, 0, 250, 280,
null, $file_uri );