前端帖子创建,包括图像附件

时间:2017-12-30 作者:JJang

我编码前端张贴,这包括图像的元数据。我已经搜索了一些,想知道下面的代码,

function my_submission_processor() {
  $post_data = array(
    \'post_title\' => $_POST[\'post_title\'],
    \'post_content\' => $_POST[\'post_content\'],
    \'post_status\' => \'draft\'
  );

  $post_id = wp_insert_post( $post_data );

  $upload = wp_upload_bits( $_FILES[\'image\'][\'name\'], null, 
file_get_contents( $_FILES[\'image\'][\'tmp_name\'] ) );

  $wp_filetype = wp_check_filetype( basename( $upload[\'file\'] ), null );

  $wp_upload_dir = wp_upload_dir();

  $attachment = array(
    \'guid\' => $wp_upload_dir[\'baseurl\'] . _wp_relative_upload_path( 
             $upload[\'file\'] ),
    \'post_mime_type\' => $wp_filetype[\'type\'],
    \'post_title\' => preg_replace(\'/\\.[^.]+$/\', \'\', basename( $upload[\'file\'] )),
    \'post_content\' => \'\',
    \'post_status\' => \'inherit\'
  );

  $attach_id = wp_insert_attachment( $attachment, $upload[\'file\'], $post_id );

  require_once(ABSPATH . \'wp-admin/includes/image.php\'); //this is what I wondering

  $attach_data = wp_generate_attachment_metadata( $attach_id, $upload[\'file\'] );
  wp_update_attachment_metadata( $attach_id, $attach_data );

  update_post_meta( $post_id, \'_thumbnail_id\', $attach_id );

  wp_redirect( site_url() . \'/thank-you/\' );

  die();
}

检查下面的代码行,

require_once(ABSPATH . \'wp-admin/includes/image.php\');
我不知道这是怎么回事,也不知道为什么会这样。这里需要php?

以上代码来自此处。https://premium.wpmudev.org/blog/upload-file-functions/

1 个回复
最合适的回答,由SO网友:dipak_pusti 整理而成

您没有提到您的代码是否有效,因为您正在关注的博客非常棒。你应该从那篇文章中得到解决方案。

And regarding your question..

require_once(ABSPATH . \'wp-admin/includes/image.php\');
这是一个核心WordPress文件,它可以对图像及其元数据进行所有操作。

Why the code is using this file..

您需要的功能不是常用的功能。WordPress正在使用该文件进行后端的所有操作。但当您想从外部获取图像或进行一些操作时,最好采用WordPress的方式。

您在代码中看到的函数如下wp_generate_attachment_metadatawp_update_attachment_metadata 完全取决于图像。php和没有这两个函数的图像元数据无法正确设置。

我希望这可以消除疑虑,并在某些方面对您有所帮助。:)

结束

相关推荐

Anonymous Postings

这是关于stackoverflow的一个问题的复述,已提交到此网站:我的客户想在他的新WP网站上创建一个表单,填写并提交后将提交给他的管理帖子队列进行审批,如果他批准,则会在他的网站上的“博客”(实际上是一堆吉他般的标签)中发布。表单将是自定义的,并具有自定义字段。下面是表单,但在我刷新之前是旧设计的。那么,这有多难呢?他不希望它出现在我开始做的WP管理面板中,而是出现在像/贡献这样的页面中