Server IP : 192.64.112.168 / Your IP : 3.145.99.240 Web Server : Apache System : Linux nc-ph-2300-85.bluforrest.com 4.18.0-513.9.1.el8_9.x86_64 #1 SMP Sat Dec 2 05:23:44 EST 2023 x86_64 User : expressoneac ( 1128) PHP Version : 8.0.30 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/expressoneac/www/wp-content/themes/woodmart/inc/admin/import/ |
Upload File : |
<?php /** * Import images. * * @package Woodmart */ namespace XTS\Import; if ( ! defined( 'WOODMART_THEME_DIR' ) ) { exit( 'No direct script access allowed' ); } /** * Import images. */ class Images { /** * Version name. * * @var string */ private $version; /** * Helpers. * * @var Helpers */ private $helpers; /** * Blog. * * @var array */ private $blog = array( 'exploring-atlantas-modern-homes', 'green-interior-design-inspiration', 'collar-brings-back-coffee-brewing-ritual', 'reinterprets-the-classic-bookshelf', 'creative-water-features-and-exterior', 'minimalist-japanese-inspired-furniture', 'new-home-decor-from-john-doerson', 'the-big-design-wall-likes-pictures', 'sweet-seat-functional-seat-for-it-folks', ); /** * Products. * * @var array */ private $products = array( 'henectus-tincidunt', 'ornare-auctor', 'eames-plastic-side-chair', 'augue-adipiscing-euismod', 'iphone-dock', 'wine-bottle-lantern', 'decoration-wooden-present', 'panton-tunior-chair', 'smart-watches-wood-edition', 'wooden-single-drawer', 'classic-wooden-chair', 'eames-lounge-chair', ); /** * Portfolio. * * @var array */ private $portfolio = array( 'suspendisse-quam-at-vestibulum', 'netus-eu-mollis-hac-dignis', 'et-vestibulum-quis-a-suspendisse', 'imperdiet-mauris-a-nontin', 'venenatis-nam-phasellus', 'leo-uteu-ullamcorper', 'a-lacus-bibendum-pulvinar', 'rhoncus-quisque-sollicitudin', 'potenti-parturient-parturie', ); /** * Categories. * * @var array */ private $categories = array( 'accessories', 'clocks', 'cooking', 'furniture', 'lighting', 'toys', ); /** * Constructor. * * @param string $version Version name. */ public function __construct( $version ) { $this->helpers = Helpers::get_instance(); $this->version = $version; $this->set_default_image_sizes(); $this->import_images(); } /** * Set default image sizes. */ private function set_default_image_sizes() { $sizes = array( 'thumbnail_size_w' => 150, 'thumbnail_size_h' => 150, 'medium_size_w' => 400, 'medium_size_h' => 300, 'large_size_w' => 1300, 'large_size_h' => 800, 'woocommerce_single_image_width' => 700, 'woocommerce_thumbnail_image_width' => 430, 'woocommerce_thumbnail_cropping' => 'uncropped', ); foreach ( $sizes as $key => $value ) { update_option( $key, $value ); } } /** * Import images. */ private function import_images() { $default_file_path = $this->helpers->get_file_path( 'images.json', 'main' ); $file_path = $this->helpers->get_file_path( 'images.json', $this->version ); if ( 'elementor' === woodmart_get_current_page_builder() ) { $default_file_path = $this->helpers->get_file_path( 'images-elementor.json', 'main' ); $file_path = $this->helpers->get_file_path( 'images-elementor.json', $this->version ); } if ( $file_path ) { $data = json_decode( $this->helpers->get_local_file_content( $file_path ), true ); } $data_default = json_decode( $this->helpers->get_local_file_content( $default_file_path ), true ); if ( isset( $data['products'] ) ) { $this->replace_posts_images( $data['products'], $this->products, 'product' ); } else { $this->replace_posts_images( $data_default['products'], $this->products, 'product' ); } if ( isset( $data['blog'] ) ) { $this->replace_posts_images( $data['blog'], $this->blog, 'post' ); } else { $this->replace_posts_images( $data_default['blog'], $this->blog, 'post' ); } if ( isset( $data['portfolio'] ) ) { $this->replace_posts_images( $data['portfolio'], $this->portfolio, 'portfolio' ); } else { $this->replace_posts_images( $data_default['portfolio'], $this->portfolio, 'portfolio' ); } if ( isset( $data['categories'] ) ) { $this->replace_categories_images( $data['categories'] ); } else { $this->replace_categories_images( $data_default['categories'] ); } } /** * Categories images. * * @param array $images Data. */ private function replace_categories_images( $images ) { $category_slugs = $this->categories; if ( $images ) { $category_slugs = array_unique( array_merge( $category_slugs, array_keys( $images ) ) ); } $categories = $this->get_terms_by_slug( $category_slugs ); $images = $this->update_ids( $images ); foreach ( $categories as $category_id ) { $term = get_term( $category_id, 'product_cat' ); if ( ! $term || is_wp_error( $term ) || empty( $images[ $term->slug ] ) ) { continue; } update_term_meta( $category_id, 'thumbnail_id', $images[ $term->slug ] ); } } /** * Posts images. * * @param array $images Data. * @param array $posts Posts. * @param string $post_type Post type. */ private function replace_posts_images( $images, $posts, $post_type ) { if ( $images ) { $posts = array_unique( array_merge( $posts, array_keys( $images ) ) ); } $posts = $this->get_posts_by_slug( $posts, $post_type ); $images = $this->update_ids( $images ); foreach ( $posts as $post_id ) { $post = get_post( $post_id ); if ( ! $post || empty( $images[ $post->post_name ] ) ) { continue; } update_post_meta( $post_id, '_thumbnail_id', $images[ $post->post_name ] ); } } /** * Get posts by slug. * * @param array $posts Posts. * @param string $post_type Post type. * * @return array */ private function get_posts_by_slug( $posts, $post_type ) { $output = array(); foreach ( $posts as $post ) { $data = get_page_by_path( $post, ARRAY_A, $post_type ); $output[] = isset( $data['ID'] ) ? $data['ID'] : ''; } return $output; } /** * Get terms by slug. * * @param array $terms Terms. * * @return array */ private function get_terms_by_slug( $terms ) { $output = array(); foreach ( $terms as $term_slug ) { $term = get_term_by( 'slug', $term_slug, 'product_cat', ARRAY_A ); $output[] = isset( $term['term_id'] ) ? $term['term_id'] : ''; } return $output; } /** * Update IDS. * * @param array $ids Ids. * * @return array */ private function update_ids( $ids ) { $imported_data = $this->helpers->get_imported_data( $this->version ); foreach ( $ids as $key => $current_id ) { if ( ! $current_id ) { continue; } $new_id = ''; $data = isset( $imported_data['attachment'] ) ? $imported_data['attachment'] : array(); if ( isset( $data[ $current_id ]['new'] ) && $data[ $current_id ]['new'] ) { $new_id = $data[ $current_id ]['new']; } if ( $new_id ) { $ids[ $key ] = $new_id; } } return $ids; } }