__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php

namespace CarouselSlider\Modules\ProductCarousel;

use CarouselSlider\Helper;
use CarouselSlider\Supports\MetaBoxForm;
use CarouselSlider\Admin\Setting;
use CarouselSlider\Supports\Sanitize;

defined( 'ABSPATH' ) || exit;

/**
 * Admin class
 *
 * @package Modules/ProductCarousel
 */
class Admin {
	/**
	 * The instance of the class
	 *
	 * @var self
	 */
	protected static $instance;

	/**
	 * Ensures only one instance of the class is loaded or can be loaded.
	 *
	 * @return self
	 */
	public static function init() {
		if ( is_null( self::$instance ) ) {
			self::$instance = new self();

			add_action( 'carousel_slider/meta_box_content', [ self::$instance, 'meta_box_content' ], 10, 2 );
			add_filter( 'carousel_slider/admin/metabox_color_settings', [ self::$instance, 'color_settings' ] );

			add_action( 'carousel_slider/save_slider', [ self::$instance, 'save_slider' ], 10, 2 );
		}

		return self::$instance;
	}

	/**
	 * Save post carousel content
	 *
	 * @param int   $post_id The post id.
	 * @param array $data User submitted data.
	 *
	 * @return void
	 */
	public function save_slider( int $post_id, array $data ) {
		$raw_data = $data['product_carousel'] ?? [];
		foreach ( $raw_data as $meta_key => $meta_value ) {
			if ( is_array( $meta_value ) ) {
				$meta_value = implode( ',', $meta_value );
			}

			update_post_meta( $post_id, $meta_key, sanitize_text_field( $meta_value ) );
		}
	}

	/**
	 * Show meta box content for product carousel
	 *
	 * @param int    $slider_id The slider id.
	 * @param string $slider_type The slider type.
	 */
	public function meta_box_content( int $slider_id, string $slider_type ) {
		if ( 'product-carousel' !== $slider_type ) {
			return;
		}
		$form     = new MetaBoxForm();
		$template = Setting::get_option( 'woocommerce_shop_loop_item_template', 'v1-compatibility' );

		$form->select(
			array(
				'group'   => 'product_carousel',
				'type'    => 'select',
				'id'      => '_product_query_type',
				'name'    => esc_html__( 'Query Type', 'carousel-slider' ),
				'std'     => 'query_product',
				'options' => array(
					'query_product'      => esc_html__( 'Query Products', 'carousel-slider' ),
					'product_categories' => esc_html__( 'Product Categories', 'carousel-slider' ),
					'product_tags'       => esc_html__( 'Product Tags', 'carousel-slider' ),
					'specific_products'  => esc_html__( 'Specific Products', 'carousel-slider' ),
				),
			)
		);
		$form->select(
			array(
				'group'   => 'product_carousel',
				'type'    => 'select',
				'id'      => '_product_query',
				'name'    => esc_html__( 'Choose Query', 'carousel-slider' ),
				'std'     => 'featured',
				'options' => array(
					'featured'                => esc_html__( 'Featured Products', 'carousel-slider' ),
					'recent'                  => esc_html__( 'Recent Products', 'carousel-slider' ),
					'sale'                    => esc_html__( 'Sale Products', 'carousel-slider' ),
					'best_selling'            => esc_html__( 'Best-Selling Products', 'carousel-slider' ),
					'top_rated'               => esc_html__( 'Top Rated Products', 'carousel-slider' ),
					'product_categories_list' => esc_html__( 'Product Categories List', 'carousel-slider' ),
				),
			)
		);
		$form->post_terms(
			array(
				'group'    => 'product_carousel',
				'type'     => 'post_terms',
				'id'       => '_product_categories',
				'taxonomy' => 'product_cat',
				'multiple' => true,
				'name'     => esc_html__( 'Product Categories', 'carousel-slider' ),
				'desc'     => esc_html__( 'Show products associated with selected categories.', 'carousel-slider' ),
			)
		);
		$form->post_terms(
			array(
				'group'    => 'product_carousel',
				'type'     => 'post_terms',
				'id'       => '_product_tags',
				'taxonomy' => 'product_tag',
				'multiple' => true,
				'name'     => esc_html__( 'Product Tags', 'carousel-slider' ),
				'desc'     => esc_html__( 'Show products associated with selected tags.', 'carousel-slider' ),
			)
		);
		$form->posts_list(
			array(
				'group'     => 'product_carousel',
				'type'      => 'posts_list',
				'id'        => '_product_in',
				'post_type' => 'product',
				'multiple'  => true,
				'name'      => esc_html__( 'Specific products', 'carousel-slider' ),
				'desc'      => esc_html__( 'Select products that you want to show as slider. Select at least 5 products', 'carousel-slider' ),
			)
		);
		$form->number(
			array(
				'group' => 'product_carousel',
				'type'  => 'number',
				'id'    => '_products_per_page',
				'name'  => esc_html__( 'Product per page', 'carousel-slider' ),
				'std'   => 12,
				'desc'  => esc_html__( 'How many products you want to show on carousel slide.', 'carousel-slider' ),
			)
		);
		if ( 'v1-compatibility' === $template ) {
			$settings = self::get_settings_for_toggle_sections();

			foreach ( $settings as $setting ) {
				Helper::print_unescaped_internal_string( MetaBoxForm::field( $setting ) );
			}
		}
	}

	/**
	 * Color settings
	 *
	 * @param string $html The content html.
	 *
	 * @return string
	 */
	public function color_settings( string $html ): string {
		global $post;
		$slide_type = get_post_meta( $post->ID, '_slide_type', true );
		$slide_type = array_key_exists( $slide_type, Helper::get_slide_types() ) ? $slide_type : 'image-carousel';
		if ( 'product-carousel' !== $slide_type ) {
			return $html;
		}
		$form = new MetaBoxForm();
		ob_start();
		$form->color(
			array(
				'group' => 'product_carousel',
				'id'    => '_product_title_color',
				'type'  => 'color',
				'name'  => esc_html__( 'Product Title Color', 'carousel-slider' ),
				'desc'  => esc_html__( 'Pick a color for product title. This color will also apply to sale tag and price.', 'carousel-slider' ),
				'std'   => Helper::get_default_setting( 'product_title_color' ),
			)
		);
		$form->color(
			array(
				'group' => 'product_carousel',
				'id'    => '_product_button_bg_color',
				'type'  => 'color',
				'name'  => esc_html__( 'Product Button Background Color', 'carousel-slider' ),
				'desc'  => esc_html__( 'Pick a color for button background color. This color will also apply to product rating.', 'carousel-slider' ),
				'std'   => Helper::get_default_setting( 'product_button_bg_color' ),
			)
		);
		$form->color(
			array(
				'group' => 'product_carousel',
				'id'    => '_product_button_text_color',
				'type'  => 'color',
				'name'  => esc_html__( 'Product Button Text Color', 'carousel-slider' ),
				'desc'  => esc_html__( 'Pick a color for button text color.', 'carousel-slider' ),
				'std'   => Helper::get_default_setting( 'product_button_text_color' ),
			)
		);
		$content = ob_get_clean();

		return $html . $content;
	}

	/**
	 * Get settings for toggle sections
	 *
	 * @return array[]
	 */
	public static function get_settings_for_toggle_sections(): array {
		return [
			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_title',
				'label'             => esc_html__( 'Show Title.', 'carousel-slider' ),
				'description'       => esc_html__( 'Check to show product title.', 'carousel-slider' ),
				'default'           => 'on',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],
			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_rating',
				'label'             => esc_html__( 'Show Rating.', 'carousel-slider' ),
				'description'       => esc_html__( 'Check to show product rating.', 'carousel-slider' ),
				'default'           => 'on',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],
			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_price',
				'label'             => esc_html__( 'Show Price.', 'carousel-slider' ),
				'description'       => esc_html__( 'Check to show product price.', 'carousel-slider' ),
				'default'           => 'on',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],

			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_cart_button',
				'label'             => esc_html__( 'Show Cart Button.', 'carousel-slider' ),
				'description'       => esc_html__( 'Check to show product add to cart button.', 'carousel-slider' ),
				'default'           => 'on',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],
			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_onsale',
				'label'             => esc_html__( 'Show Sale Tag', 'carousel-slider' ),
				'description'       => esc_html__( 'Check to show product sale tag for onsale products.', 'carousel-slider' ),
				'default'           => 'on',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],
			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_wishlist',
				'label'             => esc_html__( 'Show Wishlist Button', 'carousel-slider' ),
				/* translators: 1: YITH WooCommerce Wishlist plugin url*/
				'description'       => sprintf( esc_html__( 'Check to show wishlist button. This feature needs %s plugin to be installed.', 'carousel-slider' ), sprintf( '<a href="https://wordpress.org/plugins/yith-woocommerce-wishlist/" target="_blank" >%s</a>', __( 'YITH WooCommerce Wishlist', 'carousel-slider' ) ) ),
				'default'           => 'off',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],
			[
				'group'             => 'product_carousel',
				'type'              => 'switch',
				'id'                => '_product_quick_view',
				'label'             => esc_html__( 'Show Quick View', 'carousel-slider' ),
				'description'       => esc_html__( 'Check to show quick view button.', 'carousel-slider' ),
				'default'           => 'on',
				'sanitize_callback' => [ Sanitize::class, 'checked' ],
			],
		];
	}
}

Filemanager

Name Type Size Permission Actions
Admin.php File 9.77 KB 0775
Helper.php File 6.28 KB 0775
Module.php File 5.26 KB 0775
Setting.php File 4.3 KB 0775
Template.php File 3.69 KB 0775
View.php File 6.3 KB 0775
Filemanager