Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /var/www/web28/html/wp-content/plugins/fusion-builder/shortcodes/ |
Current File : //var/www/web28/html/wp-content/plugins/fusion-builder/shortcodes/fusion-post-slider.php |
<?php /** * Add an element to fusion-builder. * * @package fusion-builder * @since 1.0 */ if ( fusion_is_element_enabled( 'fusion_postslider' ) ) { if ( ! class_exists( 'FusionSC_Flexslider' ) ) { /** * Shortcode class. * * @since 1.0 */ class FusionSC_Flexslider extends Fusion_Element { /** * The flex counter. * * @access private * @since 1.0 * @var int */ private $flex_counter = 1; /** * Constructor. * * @access public * @since 1.0 */ public function __construct() { parent::__construct(); add_filter( 'fusion_attr_flexslider-shortcode', [ $this, 'attr' ] ); add_filter( 'fusion_attr_flexslider-shortcode-slides-container', [ $this, 'slides_container_attr' ] ); add_filter( 'fusion_attr_flexslider-shortcode-caption', [ $this, 'caption_attr' ] ); add_filter( 'fusion_attr_flexslider-shortcode-title-container', [ $this, 'title_container_attr' ] ); add_filter( 'fusion_attr_flexslider-shortcode-thumbnails', [ $this, 'thumbnails_attr' ] ); add_shortcode( 'fusion_flexslider', [ $this, 'render' ] ); add_shortcode( 'fusion_postslider', [ $this, 'render' ] ); // Ajax mechanism for query related part. add_action( 'wp_ajax_get_fusion_post_slider', [ $this, 'query' ] ); } /** * Gets the default values. * * @static * @access public * @since 2.0.0 * @return array */ public static function get_element_defaults() { return [ 'margin_top' => '', 'margin_right' => '', 'margin_bottom' => '', 'margin_left' => '', 'hide_on_mobile' => fusion_builder_default_visibility( 'string' ), 'class' => '', 'id' => '', 'category' => '', 'excerpt' => '35', 'layout' => 'attachments', 'lightbox' => 'yes', 'limit' => '3', 'post_id' => '', ]; } /** * Gets the query data for live preview. * * @static * @access public * @since 2.0.0 */ public static function query() { if ( isset( $_POST['params'] ) && isset( $_POST['params']['layout'] ) && ! apply_filters( 'fusion_builder_live_request', false ) ) { // phpcs:ignore WordPress.Security.NonceVerification $params = wp_unslash( $_POST['params'] ); // phpcs:ignore WordPress.Security $layout = sanitize_text_field( $params['layout'] ); add_filter( 'fusion_builder_live_request', '__return_true' ); $flex_slider = new FusionSC_Flexslider(); $flex_slider->args = $params; if ( 'attachments' === $layout ) { $return_data = $flex_slider->attachments_and_thumbnails( true ); } elseif ( 'posts' === $layout ) { $return_data = $flex_slider->posts( false, true ); } elseif ( 'posts-with-excerpt' === $layout ) { $return_data = $flex_slider->posts( true, true ); } if ( empty( $return_data ) ) { $return_data['placeholder'] = fusion_builder_placeholder( 'post_slider', 'posts' ); } echo wp_json_encode( $return_data ); } wp_die(); } /** * Render the shortcode * * @access public * @since 1.0 * @param array $args Shortcode parameters. * @param string $content Content between shortcode. * @return string HTML output. */ public function render( $args, $content = '' ) { $this->defaults = self::get_element_defaults(); $defaults = FusionBuilder::set_shortcode_defaults( $this->defaults, $args, 'fusion_postslider' ); $content = apply_filters( 'fusion_shortcode_content', $content, 'fusion_postslider', $args ); $this->args = $defaults; $this->args['margin_bottom'] = FusionBuilder::validate_shortcode_attr_value( $this->args['margin_bottom'], 'px' ); $this->args['margin_left'] = FusionBuilder::validate_shortcode_attr_value( $this->args['margin_left'], 'px' ); $this->args['margin_right'] = FusionBuilder::validate_shortcode_attr_value( $this->args['margin_right'], 'px' ); $this->args['margin_top'] = FusionBuilder::validate_shortcode_attr_value( $this->args['margin_top'], 'px' ); $slider = ''; if ( 'attachments' === $this->args['layout'] ) { $attachments_and_thumbnails = $this->attachments_and_thumbnails(); $slider = $attachments_and_thumbnails[0]; } elseif ( 'posts' === $this->args['layout'] ) { $slider = $this->posts( false ); } elseif ( 'posts-with-excerpt' === $this->args['layout'] ) { $slider = $this->posts( true ); } if ( empty( $slider ) ) { return fusion_builder_placeholder( 'post_slider', 'posts' ); } $slides_html = '<ul ' . FusionBuilder::attributes( 'flexslider-shortcode-slides-container' ) . '>' . $slider . '</ul>'; $html = '<div ' . FusionBuilder::attributes( 'flexslider-shortcode' ) . '>' . $slides_html . '</div>'; if ( 'attachments' === $this->args['layout'] ) { $html .= '<div ' . FusionBuilder::attributes( 'flexslider-shortcode-thumbnails' ) . '></div>'; } $this->flex_counter++; $this->on_render(); return apply_filters( 'fusion_element_post_slider_content', $html, $args ); } /** * Creates the attachements and thumbnails HTML. * * @access public * @since 1.0 * @param bool $live_request Whether or not this is an ajax request. * @return array Holding the HTML for attachment list and thumbnails list. */ public function attachments_and_thumbnails( $live_request = false ) { $return_data = []; $html_attachments = ''; $html_thumbnails = ''; if ( ! $this->args['post_id'] ) { $this->args['post_id'] = get_the_ID(); } $query = fusion_cached_get_posts( [ 'post_type' => 'attachment', 'posts_per_page' => $this->args['limit'], 'post_status' => 'any', 'post_parent' => $this->args['post_id'], 'orderby' => 'menu_order', 'order' => 'ASC', 'post_mime_type' => 'image', 'exclude' => get_post_thumbnail_id(), ] ); if ( $query ) { foreach ( $query as $attachment ) { $image_data = fusion_library()->images->get_attachment_data_by_helper( $attachment->ID ); $thumb = wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ); // We only need the data if a live request. if ( ! $live_request ) { $output = '<img class="wp-image-' . $attachment->ID . '" src="' . $image_data['url'] . '" alt="' . esc_attr( $image_data['alt'] ) . '" />'; fusion_library()->images->set_grid_image_meta( [ 'layout' => 'large', 'columns' => '1', ] ); $output = fusion_add_responsive_image_markup( $output ); $output = fusion_library()->images->apply_lazy_loading( $output, null, $attachment->ID, 'full' ); fusion_library()->images->set_grid_image_meta( [] ); if ( 'yes' === $this->args['lightbox'] ) { $output = '<a href="' . $image_data['url'] . '" data-title="' . esc_attr( $image_data['title_attribute'] ) . '" title="' . esc_attr( $image_data['title_attribute'] ) . '" data-caption="' . esc_attr( $image_data['caption_attribute'] ) . '" data-rel="prettyPhoto[flex_' . $this->flex_counter . ']">' . $output . '</a>'; } $html_attachments .= '<li data-thumb="' . $thumb[0] . '">' . $output . '</li>'; $html_thumbnails .= '<li>'; $html_thumbnails .= fusion_library()->images->apply_lazy_loading( '<img src="' . $thumb[0] . '" alt="' . esc_attr( $image_data['alt'] ) . '" />', null, $attachment->ID, 'thumbnail' ); $html_thumbnails .= '</li>'; } else { $return_data['datasets'][] = [ 'image' => $image_data['url'], 'alt' => $image_data['alt'], 'caption' => $image_data['caption_attribute'], 'title' => $image_data['title_attribute'], 'thumb' => $thumb[0], ]; } } } wp_reset_query(); if ( ! $live_request ) { return [ $html_attachments, $html_thumbnails ]; } return $return_data; } /** * Get the posts HTML. * * @access public * @since 1.0 * @param bool $with_excerpts Flag deciding if posts should be returned with excerpt. * @param bool $live_request Whether or not this is an ajax request. * @return string HTML. */ public function posts( $with_excerpts = false, $live_request = false ) { $html = ''; $return_data = []; $args = [ 'posts_per_page' => $this->args['limit'], 'meta_query' => [ [ 'key' => '_thumbnail_id', ], ], ]; if ( $this->args['post_id'] ) { $post_ids = explode( ',', $this->args['post_id'] ); $args['post__in'] = $post_ids; } $cat_ids = ''; if ( '' !== $this->args['category'] ) { $categories = explode( ',', $this->args['category'] ); if ( isset( $categories ) && $categories ) { foreach ( $categories as $category ) { $id_obj = get_category_by_slug( $category ); if ( $id_obj ) { // @codingStandardsIgnoreLine $cat_ids .= ( 0 === strpos( $category, '-' ) ) ? '-' . $id_obj->cat_ID . ',' : $id_obj->cat_ID . ','; } } } } $args['cat'] = substr( $cat_ids, 0, -1 ); // Ajax returns protected posts, but we just want published. if ( $live_request ) { $args['post_status'] = 'publish'; } $query = fusion_cached_query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); $post_thumbnail_id = get_post_thumbnail_id(); $image = wp_get_attachment_url( $post_thumbnail_id ); $alt = get_post_meta( $post_thumbnail_id, '_wp_attachment_image_alt', true ); if ( ! $live_request ) { $image_output = '<img class="wp-image-' . $post_thumbnail_id . '" src="' . $image . '" alt="' . esc_attr( $alt ) . '" />'; fusion_library()->images->set_grid_image_meta( [ 'layout' => 'large', 'columns' => '1', ] ); $image_output = fusion_add_responsive_image_markup( $image_output ); $image_output = fusion_library()->images->apply_lazy_loading( $image_output, null, $post_thumbnail_id, 'full' ); fusion_library()->images->set_grid_image_meta( [] ); $link_output = '<a href="' . get_permalink() . '" aria-label="' . the_title_attribute( [ 'echo' => false ] ) . '">' . $image_output . '</a>'; $title = '<h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2>'; $content = $title; if ( $with_excerpts ) { $excerpt = fusion_builder_get_post_content( '', 'yes', $this->args['excerpt'], true ); $content = '<div ' . FusionBuilder::attributes( 'excerpt-container' ) . '>' . $title . $excerpt . '</div>'; } $container = '<div ' . FusionBuilder::attributes( 'flexslider-shortcode-title-container' ) . '>' . $content . '</div>'; $html .= '<li>' . $link_output . $container . '</li>'; } else { $return_data['datasets'][] = [ 'image' => $image, 'title_attribute' => the_title_attribute( [ 'echo' => false ] ), 'title' => get_the_title(), 'alt' => $alt, 'permalink' => get_permalink(), 'excerpt' => ( $with_excerpts ) ? fusion_get_content_data( 'fusion_postslider', false ) : '', ]; } } } wp_reset_query(); if ( ! $live_request ) { return $html; } return $return_data; } /** * Builds the attributes array. * * @access public * @since 1.0 * @return array */ public function attr() { $attr = [ 'class' => 'fusion-post-slider fusion-flexslider fusion-flexslider-loading flexslider-' . $this->args['layout'], 'style' => '', ]; $attr = fusion_builder_visibility_atts( $this->args['hide_on_mobile'], $attr ); if ( 'yes' === $this->args['lightbox'] && 'attachments' === $this->args['layout'] ) { $attr['class'] .= ' flexslider-lightbox'; } $attr['style'] .= Fusion_Builder_Margin_Helper::get_margins_style( $this->args ); if ( $this->args['class'] ) { $attr['class'] .= ' ' . $this->args['class']; } if ( $this->args['id'] ) { $attr['id'] = $this->args['id']; } return $attr; } /** * Builds the slider-container attributes array. * * @access public * @since 1.0 * @return array */ public function slides_container_attr() { return [ 'class' => 'slides', ]; } /** * Builds the caption attributes array. * * @access public * @since 1.0 * @return array */ public function caption_attr() { return [ 'class' => 'flex-caption', ]; } /** * Builds the title-container attributes array. * * @access public * @since 1.0 * @return array */ public function title_container_attr() { return [ 'class' => 'slide-excerpt', ]; } /** * Builds the thumbnails attributes array. * * @access public * @since 1.0 * @return array */ public function thumbnails_attr() { $attr = [ 'class' => 'flexslider', ]; if ( 'attachments' === $this->args['layout'] ) { $attr['class'] .= ' fat'; } return $attr; } /** * Sets the necessary scripts. * * @access public * @since 3.2 * @return void */ public function on_first_render() { Fusion_Dynamic_JS::enqueue_script( 'fusion-flexslider' ); } } } new FusionSC_Flexslider(); } /** * Map shortcode to Avada Builder * * @since 1.0 */ function fusion_element_post_slider() { $builder_status = function_exists( 'is_fusion_editor' ) && is_fusion_editor(); $post_cat = $builder_status ? fusion_builder_shortcodes_categories( 'category', false, false, 26 ) : []; $cat_include = [ 'type' => 'multiple_select', 'heading' => esc_attr__( 'Categories', 'fusion-builder' ), 'placeholder' => esc_attr__( 'Categories', 'fusion-builder' ), 'description' => esc_attr__( 'Select categories of posts to display or leave blank for all.', 'fusion-builder' ), 'param_name' => 'category', 'value' => $post_cat, 'default' => '', 'dependency' => [ [ 'element' => 'layout', 'value' => 'attachments', 'operator' => '!=', ], ], 'callback' => [ 'function' => 'fusion_post_slider_query', 'ajax' => true, ], ]; if ( count( $post_cat ) > 25 ) { $cat_include['type'] = 'ajax_select'; $cat_include['ajax'] = 'fusion_search_query'; $cat_include['value'] = []; $cat_include['ajax_params'] = [ 'taxonomy' => 'category', 'use_slugs' => true, ]; } fusion_builder_map( fusion_builder_frontend_data( 'FusionSC_Flexslider', [ 'name' => esc_attr__( 'Post Slider', 'fusion-builder' ), 'shortcode' => 'fusion_postslider', 'icon' => 'fusiona-layers-alt', 'preview' => FUSION_BUILDER_PLUGIN_DIR . 'inc/templates/previews/fusion-post-slider-preview.php', 'preview_id' => 'fusion-builder-block-module-post-slider-preview-template', 'help_url' => 'https://avada.com/documentation/post-slider-element/', 'params' => [ [ 'type' => 'select', 'heading' => esc_attr__( 'Layout', 'fusion-builder' ), 'description' => esc_attr__( 'Choose a layout style for Post Slider.', 'fusion-builder' ), 'param_name' => 'layout', 'value' => [ 'posts' => esc_attr__( 'Posts with Title', 'fusion-builder' ), 'posts-with-excerpt' => esc_attr__( 'Posts with Title and Excerpt', 'fusion-builder' ), 'attachments' => esc_attr__( 'Attachment Layout, Only Images Attached to Post/Page', 'fusion-builder' ), ], 'default' => 'posts', 'callback' => [ 'function' => 'fusion_post_slider_query', 'ajax' => true, ], ], [ 'type' => 'uploadattachment', 'heading' => esc_attr__( 'Attach Images to Post/Page Gallery', 'fusion-builder' ), 'description' => esc_attr__( 'To add images to this post or page for attachments layout, navigate to "Upload Files" tab in media manager and upload new images.', 'fusion-builder' ), 'param_name' => 'upload_attachments', 'value' => '', 'remove_from_atts' => true, 'dependency' => [ [ 'element' => 'layout', 'value' => 'attachments', 'operator' => '==', ], ], 'callback' => [ 'function' => 'fusion_post_slider_query', 'ajax' => true, ], ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'Excerpt Number of Words', 'fusion-builder' ), 'description' => esc_attr__( 'Insert the number of words you want to show in the excerpt.', 'fusion-builder' ), 'param_name' => 'excerpt', 'value' => '35', 'dependency' => [ [ 'element' => 'layout', 'value' => 'posts-with-excerpt', 'operator' => '==', ], ], ], $cat_include, [ 'type' => 'textfield', 'heading' => esc_attr__( 'Number of Slides', 'fusion-builder' ), 'description' => esc_attr__( 'Select the number of slides to display.', 'fusion-builder' ), 'param_name' => 'limit', 'value' => '3', 'callback' => [ 'function' => 'fusion_post_slider_query', 'ajax' => true, ], ], [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Image Lightbox', 'fusion-builder' ), 'description' => esc_attr__( 'Only works on attachment layout. Lightbox must be enabled in Global Options or the image will open up by in the same tab by itself.', 'fusion-builder' ), 'param_name' => 'lightbox', 'value' => [ 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ], 'default' => 'yes', 'dependency' => [ [ 'element' => 'layout', 'value' => 'attachments', 'operator' => '==', ], ], ], 'fusion_margin_placeholder' => [ 'param_name' => 'margin', 'group' => esc_attr__( 'General', 'fusion-builder' ), 'value' => [ 'margin_top' => '', 'margin_right' => '', 'margin_bottom' => '', 'margin_left' => '', ], ], [ 'type' => 'checkbox_button_set', 'heading' => esc_attr__( 'Element Visibility', 'fusion-builder' ), 'param_name' => 'hide_on_mobile', 'value' => fusion_builder_visibility_options( 'full' ), 'default' => fusion_builder_default_visibility( 'array' ), 'description' => esc_attr__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ), ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'CSS Class', 'fusion-builder' ), 'description' => esc_attr__( 'Add a class to the wrapping HTML element.', 'fusion-builder' ), 'param_name' => 'class', 'value' => '', ], [ 'type' => 'textfield', 'heading' => esc_attr__( 'CSS ID', 'fusion-builder' ), 'description' => esc_attr__( 'Add an ID to the wrapping HTML element.', 'fusion-builder' ), 'param_name' => 'id', 'value' => '', ], ], 'callback' => [ 'function' => 'fusion_post_slider_query', 'ajax' => true, ], ] ) ); } add_action( 'fusion_builder_before_init', 'fusion_element_post_slider' );
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare