在内容附件中。php我有:
/* preview for PDFs*/
if (\'\' === $ai) {
wp_generate_attachment_metadata( $the_ID, wp_upload_dir() );
}
它抛出以下错误:
Fatal error: Call to undefined function wp_generate_attachment_metadata() in /home/content/xx/html/example/wp-content/themes/twentyseventeen-child/template-parts/post/content-attachment.php on line 110
根据此处的另一个问题,我尝试将以下内容添加到此文件的顶部:
require_once( ABSPATH . \'wp-admin/includes/image.php\' );
这就产生了一系列这样的错误:
Warning: preg_match() expects parameter 2 to be string, array given in /home/content/55/8933555/html/seatacnoise/wp-includes/functions.php on line 2797
现在怎么办?
SO网友:Sally CJ
尽管您已经解决了它(“未定义”问题),但应该注意的是wp_generate_attachment_metadata()
定义于wp-admin/includes/image.php
, 因此,如果您在前端(即站点的公共端或非管理员端)使用该功能,则需要手动加载该文件/wp-admin
页码(例如,单个附件页)。
事实上,函数引用表示:
如果在要使用此函数的环境中(例如在短代码中)未定义此函数,请使用include函数:
if ( ! function_exists( \'wp_crop_image\' ) ) {
include( ABSPATH . \'wp-admin/includes/image.php\' );
}
(您可以使用
wp_generate_attachment_metadata
而不是那样
wp_crop_image
)
其次,您没有正确使用该功能:
wp_generate_attachment_metadata( $the_ID, wp_upload_dir() );
因为第二个参数
wp_generate_attachment_metadata()
应该是附件文件路径,而不是数组(
wp_upload_dir()
返回数组)或其他任何内容。例如:
$file = \'/full/path/to/the/attachment/file.pdf\';
wp_generate_attachment_metadata( $the_ID, $file );
并确保文件路径有效,并且
$the_ID
具有正确的附件帖子ID。