Created
October 25, 2018 16:40
-
-
Save wpfangirl/5df51d2f5b0aa2256c84b4f48651ae4d to your computer and use it in GitHub Desktop.
Set Gravity Forms upload as post thumbnail (featured image)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Create the image attachment and return the new media upload id. | |
* | |
* @author Joshua David Nelson, [email protected] | |
* | |
* @since 03.29.2017 updated to a class, utilizing code from Takuro Hishikawa's gist linked below. | |
* | |
* @see https://gist.github.com/hissy/7352933 | |
* | |
* @see http://codex.wordpress.org/Function_Reference/wp_insert_attachment#Example | |
* | |
* @link https://joshuadnelson.com/programmatically-add-images-to-media-library/ | |
*/ | |
class JDN_Create_Media_File { | |
var $post_id; | |
var $image_url; | |
var $wp_upload_url; | |
var $attachment_id; | |
/** | |
* Setup the class variables | |
*/ | |
public function __construct( $image_url, $post_id = 0 ) { | |
// Setup class variables | |
$this->image_url = esc_url( $image_url ); | |
$this->post_id = absint( $post_id ); | |
$this->wp_upload_url = $this->get_wp_upload_url(); | |
$this->attachment_id = $this->attachment_id ?: false; | |
return $this->create_image_id(); | |
} | |
/** | |
* Set the upload directory | |
*/ | |
private function get_wp_upload_url() { | |
$wp_upload_dir = wp_upload_dir(); | |
return isset( $wp_upload_dir['url'] ) ? $wp_upload_dir['url'] : false; | |
} | |
/** | |
* Create the image and return the new media upload id. | |
* | |
* @see https://gist.github.com/hissy/7352933 | |
* | |
* @see http://codex.wordpress.org/Function_Reference/wp_insert_attachment#Example | |
*/ | |
public function create_image_id() { | |
if( $this->attachment_id ) | |
return $this->attachment_id; | |
if( empty( $this->image_url ) || empty( $this->wp_upload_url ) ) | |
return false; | |
$filename = basename( $this->image_url ); | |
$upload_file = wp_upload_bits( $filename, null, file_get_contents( $this->image_url ) ); | |
if ( ! $upload_file['error'] ) { | |
$wp_filetype = wp_check_filetype( $filename, null ); | |
$attachment = array( | |
'post_mime_type' => $wp_filetype['type'], | |
'post_parent' => $this->post_id, | |
'post_title' => preg_replace('/\.[^.]+$/', '', $filename), | |
'post_content' => '', | |
'post_status' => 'inherit' | |
); | |
$attachment_id = wp_insert_attachment( $attachment, $upload_file['file'], $this->post_id ); | |
if( ! is_wp_error( $attachment_id ) ) { | |
require_once( ABSPATH . "wp-admin" . '/includes/image.php' ); | |
require_once( ABSPATH . 'wp-admin/includes/media.php' ); | |
$attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] ); | |
wp_update_attachment_metadata( $attachment_id, $attachment_data ); | |
$this->attachment_id = $attachment_id; | |
return $attachment_id; | |
} | |
} | |
return false; | |
} // end function get_image_id | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Sets an image uploaded through the Gravity Forms upload field (not the post image field) as the post featured image. | |
* Works with the regular upload field and Ajax Upload for Gravity Forms: https://wordpress.org/plugins/ajax-upload-for-gravity-forms/ | |
* | |
* @author Sallie Goetsch, [email protected] | |
* | |
* Uses Joshua David Nelson's JDN_Create_Media_File class. | |
* | |
* @see https://gist.github.com/joshuadavidnelson/164a0a0744f0693d5746#file-create-image-id-php | |
* | |
*/ | |
add_action('gform_after_create_post_4', 'set_post_featured', 10, 3 ); // Substitute your form ID for the '4' | |
function set_post_featured($post_id, $entry, $form) { | |
$post = get_post($post_id); | |
$image_url = rgar($entry, '55'); // Substitute your upload field ID for the '55' | |
$create_image = new JDN_Create_Media_File( $image_url, $post_id ); // See create-image.php for this class | |
$image_id = $create_image->attachment_id; | |
set_post_thumbnail($post_id, $image_id); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment