调用未定义的函数wp_GENERATE_ATTACHATE_METADATA()

时间:2020-09-16 作者:jchwebdev

在内容附件中。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
现在怎么办?

1 个回复
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。

相关推荐

使用WordPress API从页面获取所有PDF文件

我正在寻找一种使用WordPress API从WordPress帖子中获取所有PDF文件的方法。我获得了所有随附文件:https://www.domain.com/wp-json/wp/v2/media?parent=1267但当我尝试仅获取包含以下内容的PDF文件时,它不起作用:https://www.domain.com/wp-json/wp/v2/media?parent=1267&search=.pdf有什么想法吗?顺致敬意,