first
This commit is contained in:
@ -0,0 +1,93 @@
|
||||
<?php
|
||||
/**
|
||||
* Image placeholder.
|
||||
*
|
||||
* @package visual-portfolio
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class Visual_Portfolio_Image_Placeholder
|
||||
*/
|
||||
class Visual_Portfolio_Image_Placeholder {
|
||||
/**
|
||||
* Visual_Portfolio_Image_Placeholder constructor.
|
||||
*/
|
||||
public function __construct() {
|
||||
if ( is_admin() ) {
|
||||
add_action( 'admin_init', array( $this, 'create_placeholder_image' ), 3 );
|
||||
} else {
|
||||
add_action( 'wp', array( $this, 'create_placeholder_image' ), 3 );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a placeholder image in the media library.
|
||||
* For code thanks to WooCommerce.
|
||||
*/
|
||||
public function create_placeholder_image() {
|
||||
// Run only on first plugin install.
|
||||
// This option added in Migration class.
|
||||
if ( get_option( 'vpf_db_version' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$general_settings = get_option( 'vp_general' );
|
||||
if ( ! is_array( $general_settings ) ) {
|
||||
$general_settings = array();
|
||||
}
|
||||
|
||||
// Don't run when already added placeholder.
|
||||
if ( isset( $general_settings['no_image'] ) && $general_settings['no_image'] ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Upload placeholder image to Media Library.
|
||||
$upload_dir = wp_upload_dir();
|
||||
$source = visual_portfolio()->plugin_path . '/assets/images/placeholder.png';
|
||||
$filename = $upload_dir['basedir'] . '/visual-portfolio/placeholder.png';
|
||||
|
||||
// try to move to /visual-portfolio/ directory.
|
||||
if ( ! file_exists( $upload_dir['basedir'] . '/visual-portfolio' ) ) {
|
||||
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
|
||||
@mkdir( $upload_dir['basedir'] . '/visual-portfolio', 0755, true );
|
||||
}
|
||||
if ( ! file_exists( $upload_dir['basedir'] . '/visual-portfolio' ) ) {
|
||||
$filename = $upload_dir['basedir'] . '/visual-portfolio-placeholder.png';
|
||||
}
|
||||
|
||||
if ( ! file_exists( $filename ) ) {
|
||||
copy( $source, $filename );
|
||||
}
|
||||
|
||||
if ( ! file_exists( $filename ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$filetype = wp_check_filetype( basename( $filename ), null );
|
||||
$attachment = array(
|
||||
'guid' => $upload_dir['url'] . '/' . basename( $filename ),
|
||||
'post_mime_type' => $filetype['type'],
|
||||
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
|
||||
'post_content' => '',
|
||||
'post_status' => 'inherit',
|
||||
);
|
||||
$attach_id = wp_insert_attachment( $attachment, $filename );
|
||||
|
||||
// Update settings.
|
||||
$general_settings['no_image'] = $attach_id;
|
||||
update_option( 'vp_general', $general_settings );
|
||||
|
||||
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
|
||||
require_once ABSPATH . 'wp-admin/includes/image.php';
|
||||
|
||||
// Generate the metadata for the attachment, and update the database record.
|
||||
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
|
||||
wp_update_attachment_metadata( $attach_id, $attach_data );
|
||||
}
|
||||
}
|
||||
|
||||
new Visual_Portfolio_Image_Placeholder();
|
Reference in New Issue
Block a user