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-news-ticker.php |
<?php /** * Add an element to fusion-builder. * * @package fusion-builder * @since 3.5 */ if ( fusion_is_element_enabled( 'fusion_news_ticker' ) ) { if ( ! class_exists( 'Fusion_News_Ticker' ) && class_exists( 'Fusion_Element' ) ) { /** * Shortcode class. * * @since 3.5 */ class Fusion_News_Ticker extends Fusion_Element { /** * The number of instance of this element. Working as an id. * * @access protected * @since 3.5 * @var int */ protected $element_id = 1; /** * Constructor. * * @access public * @since 3.5 */ public function __construct() { parent::__construct(); add_shortcode( 'fusion_news_ticker', [ $this, 'render' ] ); add_filter( 'fusion_pipe_seprator_shortcodes', [ $this, 'allow_separator' ] ); add_filter( 'fusion_attr_news-ticker-element', [ $this, 'ticker_attr' ] ); add_filter( 'fusion_attr_news-ticker-title', [ $this, 'ticker_title_attr' ] ); add_filter( 'fusion_attr_news-ticker-bar', [ $this, 'ticker_bar_attr' ] ); add_filter( 'fusion_attr_news-ticker-items-list', [ $this, 'ticker_items_list_attr' ] ); // Ajax mechanism for query related part. add_action( 'wp_ajax_get_fusion_news_ticker_posts', [ $this, 'ajax_query' ] ); } /** * Gets the default values. * * @since 3.5 * @return array */ public static function get_element_defaults() { $fusion_settings = awb_get_fusion_settings(); return [ 'ticker_title' => '', 'post_type' => 'post', 'pull_by' => '', 'orderby' => 'date', 'order' => 'DESC', 'posts_number' => '7', 'show_date' => 'no', 'date_format' => '', 'ticker_type' => 'marquee', 'ticker_speed' => '75', 'posts_distance' => '', 'separator' => '', 'carousel_display_time' => '6', 'link_target' => '_self', 'hide_on_mobile' => fusion_builder_default_visibility( 'string' ), 'class' => '', 'id' => '', // Design. 'fusion_font_family_ticker_font' => '', 'fusion_font_variant_ticker_font' => '', 'font_size' => '', 'line_height' => '2.5', 'letter_spacing' => '', 'text_transform' => '', 'ticker_height' => '', 'title_font_color' => '', 'title_background_color' => '', 'title_shape' => 'none', 'ticker_font_color' => '', 'ticker_hover_font_color' => '', 'ticker_background_hover_color' => '', 'ticker_background_color' => '', 'ticker_indicators_color' => '', 'ticker_indicators_hover_color' => '', 'carousel_bar_height' => '3', 'carousel_arrows_style' => 'none', 'carousel_btn_border_radius' => '', 'title_padding_right' => '', 'title_padding_left' => '', 'ticker_padding_right' => '', 'ticker_padding_left' => '', 'btn_padding_top' => '', 'btn_padding_right' => '', 'btn_padding_bottom' => '', 'btn_padding_left' => '', 'margin_top' => '', 'margin_right' => '', 'margin_bottom' => '', 'margin_left' => '', 'border_radius_top_left' => '', 'border_radius_top_right' => '', 'border_radius_bottom_right' => '', 'border_radius_bottom_left' => '', 'box_shadow' => '', 'box_shadow_blur' => '', 'box_shadow_color' => '', 'box_shadow_horizontal' => '', 'box_shadow_spread' => '', 'box_shadow_style' => '', 'box_shadow_vertical' => '', // Extra. 'animation_direction' => 'left', 'animation_offset' => $fusion_settings->get( 'animation_offset' ), 'animation_speed' => '', 'animation_delay' => '', 'animation_type' => '', 'animation_color' => '', ]; } /** * Enables pipe separator for short code. * * @since 3.5 * @param array $shortcodes The shortcodes array. * @return array */ public function allow_separator( $shortcodes ) { if ( is_array( $shortcodes ) ) { array_push( $shortcodes, 'fusion_news_ticker' ); } return $shortcodes; } /** * Render the shortcode. * * @since 3.5 * @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(); // We need dynamic defaults for taxonomies. if ( isset( $args['pull_by'] ) ) { $this->defaults[ 'dynamic_tax_include_' . $args['pull_by'] ] = ''; $this->defaults[ 'dynamic_tax_exclude_' . $args['pull_by'] ] = ''; } $this->args = FusionBuilder::set_shortcode_defaults( $this->defaults, $args, 'fusion_news_ticker' ); $html = ''; $html .= '<div ' . FusionBuilder::attributes( 'news-ticker-element' ) . '>'; if ( ! empty( $this->args['ticker_title'] ) ) { $html .= '<div ' . FusionBuilder::attributes( 'news-ticker-title' ) . '>'; $html .= $this->args['ticker_title']; if ( 'triangle' === $this->args['title_shape'] ) { $html .= '<div class="awb-news-ticker-title-decorator awb-news-ticker-title-decorator-triangle"></div>'; } $html .= '</div>'; } $html .= '<div ' . FusionBuilder::attributes( 'news-ticker-bar' ) . '>'; $html .= '<div ' . FusionBuilder::attributes( 'news-ticker-items-list' ) . '>'; $html .= $this->get_ticker_items_html( $this->get_ticker_items_query_args() ); $html .= '</div>'; $html .= $this->get_carousel_buttons_if_necessary(); $html .= '</div>'; $html .= '</div>'; $this->element_id++; $this->on_render(); return $html; } /** * Get the ticker element attributes. * * @since 3.5 * @return array */ public function ticker_attr() { $attr = [ 'class' => 'awb-news-ticker awb-news-ticker-' . $this->element_id, 'role' => 'marquee', 'style' => $this->get_inline_style(), ]; if ( 'marquee' === $this->args['ticker_type'] ) { $attr['class'] .= ' awb-news-ticker-marquee'; } elseif ( 'carousel' === $this->args['ticker_type'] ) { $attr['class'] .= ' awb-news-ticker-carousel'; } $attr = fusion_builder_visibility_atts( $this->args['hide_on_mobile'], $attr ); if ( $this->args['class'] ) { $attr['class'] .= ' ' . $this->args['class']; } if ( $this->args['id'] ) { $attr['id'] = $this->args['id']; } if ( $this->args['animation_type'] ) { $attr = Fusion_Builder_Animation_Helper::add_animation_attributes( $this->args, $attr ); } return $attr; } /** * Get the ticker title attributes. * * @since 3.5 * @return array */ public function ticker_title_attr() { $attr = [ 'class' => 'awb-news-ticker-title', ]; if ( 'rounded' === $this->args['title_shape'] ) { $attr['class'] .= ' awb-news-ticker-title-rounded'; } return $attr; } /** * Get the ticker bar attributes. * * @since 3.5 * @return array */ public function ticker_bar_attr() { $attr = [ 'class' => 'awb-news-ticker-bar', ]; if ( 'marquee' === $this->args['ticker_type'] ) { $attr['class'] .= ' awb-news-ticker-bar-marquee'; } elseif ( 'carousel' === $this->args['ticker_type'] ) { $attr['class'] .= ' awb-news-ticker-bar-carousel'; } return $attr; } /** * Get the attributes for the ticker items wrapper. * * @since 3.5 * @return array */ public function ticker_items_list_attr() { $attr = [ 'class' => 'awb-news-ticker-item-list', ]; if ( 'marquee' === $this->args['ticker_type'] ) { $attr['class'] .= ' awb-news-ticker-item-list-run'; $attr['data-awb-ticker-speed'] = $this->args['ticker_speed']; } elseif ( 'carousel' === $this->args['ticker_type'] ) { $attr['class'] .= ' awb-news-ticker-item-list-carousel'; $attr['data-awb-news-ticker-display-time'] = $this->args['carousel_display_time']; } return $attr; } /** * Get the inline style. * * @since 3.5 * @return string */ public function get_inline_style() { $css_vars_options = [ 'font_size', 'letter_spacing', 'text_transform', 'ticker_height', 'title_font_color', 'title_background_color', 'ticker_font_color', 'ticker_hover_font_color', 'ticker_background_color', 'ticker_background_hover_color', 'ticker_indicators_color', 'ticker_indicators_hover_color', 'title_padding_right', 'title_padding_left', 'carousel_btn_border_radius', 'btn_padding_top', 'btn_padding_right', 'btn_padding_bottom', 'btn_padding_left', 'ticker_padding_right', 'ticker_padding_left', 'margin_top', 'margin_right', 'margin_bottom', 'margin_left', 'border_radius_top_left', 'border_radius_top_right', 'border_radius_bottom_right', 'border_radius_bottom_left', ]; if ( $this->args['line_height'] ) { $css_vars_options [] = 'line_height'; } $custom_vars = []; $typography = Fusion_Builder_Element_Helper::get_font_styling( $this->args, 'ticker_font', 'array' ); foreach ( $typography as $rule => $value ) { $custom_vars[ $rule ] = $value; } if ( ! $this->is_default( 'carousel_bar_height' ) ) { $custom_vars['carousel_bar_height'] = $this->args['carousel_bar_height'] . 'px'; } // Increase padding a little on triangle shape. if ( 'carousel' === $this->args['ticker_type'] && 'triangle' === $this->args['title_shape'] ) { if ( ! is_rtl() && $this->is_default( 'ticker_padding_left' ) ) { $custom_vars['ticker_padding_left'] = '17px'; } elseif ( $this->is_default( 'ticker_padding_right' ) ) { $custom_vars['ticker_padding_right'] = '17px'; } } if ( ! $this->is_default( 'carousel_display_time' ) ) { $custom_vars['carousel_display_time'] = $this->args['carousel_display_time'] . 's'; } if ( $this->args['posts_distance'] && 'marquee' === $this->args['ticker_type'] ) { $custom_vars['posts_distance'] = round( $this->args['posts_distance'] / 2, 1 ) . 'px'; } $box_shadow = Fusion_Builder_Box_Shadow_Helper::get_box_shadow_css_var( '--awb-box-shadow', [ 'box_shadow' => $this->args['box_shadow'], 'box_shadow_horizontal' => $this->args['box_shadow_horizontal'], 'box_shadow_vertical' => $this->args['box_shadow_vertical'], 'box_shadow_blur' => $this->args['box_shadow_blur'], 'box_shadow_spread' => $this->args['box_shadow_spread'], 'box_shadow_color' => $this->args['box_shadow_color'], 'box_shadow_style' => $this->args['box_shadow_style'], ] ); return $this->get_css_vars_for_options( $css_vars_options ) . $this->get_custom_css_vars( $custom_vars ) . $box_shadow; } /** * Get the query arguments for ticker items. * * @since 3.5 * @param array $args Other arguments, that will replace $this->args. * @return array */ public function get_ticker_items_query_args( $args = null ) { if ( null === $args ) { $args = $this->args; } $posts_options = []; // Post Type Argument. $post_type = 'post'; if ( $args['post_type'] ) { $post_type = $args['post_type']; } $posts_options['post_type'] = $post_type; // Number of posts argument. $number_of_posts = 7; if ( $args['posts_number'] && is_numeric( $args['posts_number'] ) ) { $number_of_posts = $args['posts_number']; } $posts_options['posts_per_page'] = $number_of_posts; // Order & orderby. if ( ! empty( $args['orderby'] ) && 'upcoming_event' !== $args['orderby'] ) { $posts_options['orderby'] = $args['orderby']; if ( ! empty( $args['order'] ) ) { $posts_options['order'] = $args['order']; } } $posts_options = array_merge( $posts_options, $this->get_posts_taxonomy_filters( $args ) ); return apply_filters( 'awb_news_ticker_posts_options', $posts_options, $this->element_id ); } /** * Returns an array that contains the taxonomy arguments, ready to be merged with the wp query array. * * @since 3.5 * @param array $args The arguments. * @return array */ private function get_posts_taxonomy_filters( $args ) { $post_type = $args['post_type']; $taxonomy = $args['pull_by']; $wp_query = []; if ( 'all' === $taxonomy || empty( $taxonomy ) || empty( $post_type ) ) { return $wp_query; } // Return if taxonomy does not exist in the post type. $post_type_taxonomies = get_object_taxonomies( $post_type, 'objects' ); if ( ! isset( $post_type_taxonomies[ $taxonomy ] ) ) { return $wp_query; } $include_query_args = []; $exclude_query_args = []; if ( ! empty( $args[ 'dynamic_tax_include_' . $taxonomy ] ) ) { $include_query_args = [ [ 'taxonomy' => $taxonomy, 'terms' => explode( ',', $args[ 'dynamic_tax_include_' . $taxonomy ] ), 'include_children' => true, ], ]; } if ( ! empty( $args[ 'dynamic_tax_exclude_' . $taxonomy ] ) ) { $exclude_query_args = [ 'taxonomy' => $taxonomy, 'terms' => explode( ',', $args[ 'dynamic_tax_exclude_' . $taxonomy ] ), 'include_children' => true, 'operator' => 'NOT IN', ]; } $tax_query = []; if ( ! empty( $include_query_args ) && ! empty( $exclude_query_args ) ) { $tax_query['relation'] = 'AND'; array_push( $tax_query, $include_query_args ); array_push( $tax_query, $exclude_query_args ); } elseif ( ! empty( $include_query_args ) ) { array_push( $tax_query, $include_query_args ); } elseif ( ! empty( $exclude_query_args ) ) { array_push( $tax_query, $exclude_query_args ); } if ( ! empty( $tax_query ) ) { // phpcs:ignore WordPress.DB.SlowDBQuery $wp_query['tax_query'] = $tax_query; } return $wp_query; } /** * Get the HTML of ticker items. * * @since 3.5 * @param array $query_args Wp_Query arguments to retrieve the posts. * @param array $args Other arguments, that will replace $this->args. * @return string */ public function get_ticker_items_html( $query_args, $args = null ) { if ( null === $args ) { $args = $this->args; } $query_needs_custom_event_calendar_function = 'tribe_events' === $args['post_type'] && function_exists( 'tribe_get_events' ) && 'upcoming_events' === $args['orderby']; if ( $query_needs_custom_event_calendar_function ) { $query_args['ends_after'] = 'now'; $query_args['orderby'] = 'event_date'; $query_args['order'] = 'ASC'; $ticker_posts = tribe_get_events( $query_args ); } else { $ticker_posts = get_posts( $query_args ); } $separator = ''; if ( $args['separator'] ) { $separator = $args['separator']; } $html = ''; $displayed_posts_num = count( $ticker_posts ); $carousel_mode = ( 'carousel' === $args['ticker_type'] ? true : false ); $display_separator = ( ! $carousel_mode ); $link_target = ( '_blank' === $args['link_target'] ? ' target="_blank"' : '' ); foreach ( $ticker_posts as $index => $ticker_post ) { $additional_item_class = ''; if ( 0 === $index && $carousel_mode ) { $additional_item_class = ' awb-news-ticker-item-active'; } $text = get_the_title( $ticker_post ); if ( 'yes' === $args['show_date'] ) { $date_format = 'M j: '; if ( $args['date_format'] ) { $date_format = $args['date_format']; } if ( get_post_type( $ticker_post ) === 'tribe_events' && function_exists( 'tribe_get_start_date' ) ) { $date_text = tribe_get_start_date( $ticker_post, false, $date_format ); } else { $date_text = get_the_date( $date_format, $ticker_post ); } $text = '<span class="awb-news-ticker-title-date">' . $date_text . '</span>' . $text; } $html .= '<div class="awb-news-ticker-item' . $additional_item_class . '">'; $html .= '<a class="awb-news-ticker-link" href="' . get_the_permalink( $ticker_post ) . '"' . $link_target . '>' . $text . '</a>'; $html .= '</div>'; $is_last_item = ( ( $displayed_posts_num - 1 ) === $index ? true : false ); if ( $display_separator && ! $is_last_item ) { $html .= '<div class="awb-news-ticker-item-separator">' . $separator . '</div>'; } } return $html; } /** * Gets the query data. * * @since 3.5 * @param array $defaults An array of defaults. * @return void */ public function ajax_query( $defaults ) { check_ajax_referer( 'fusion_load_nonce', 'fusion_load_nonce' ); // From Ajax Request. if ( isset( $_POST['model'] ) && ! apply_filters( 'fusion_builder_live_request', false ) ) { // phpcs:ignore WordPress.Security.NonceVerification $args = wp_unslash( $_POST['model']['params'] ); // phpcs:ignore WordPress.Security $defaults = self::get_element_defaults(); // We need dynamic defaults for taxonomies. if ( isset( $args['pull_by'] ) ) { $defaults[ 'dynamic_tax_include_' . $args['pull_by'] ] = ''; $defaults[ 'dynamic_tax_exclude_' . $args['pull_by'] ] = ''; } $args = FusionBuilder::set_shortcode_defaults( $defaults, $args, 'fusion_news_ticker' ); add_filter( 'fusion_builder_live_request', '__return_true' ); } $query_args = $this->get_ticker_items_query_args( $args ); echo wp_json_encode( $this->get_ticker_items_html( $query_args, $args ) ); wp_die(); } /** * Get the carousel buttons HTML if necessary. * * @return string */ private function get_carousel_buttons_if_necessary() { $html = ''; if ( 'carousel' === $this->args['ticker_type'] ) { $additional_btn_classes = ''; if ( 'border' === $this->args['carousel_arrows_style'] ) { $additional_btn_classes = ' awb-news-ticker-btn-border'; } $previous_aria_label = esc_attr__( 'Previous', 'fusion-builder' ); $next_aria_label = esc_attr__( 'Next', 'fusion-builder' ); $html .= '<div class="awb-news-ticker-items-buttons">'; $html .= '<div class="awb-news-ticker-btn-wrapper"><button class="awb-news-ticker-prev-btn' . $additional_btn_classes . '" aria-label="' . $previous_aria_label . '"><span class="awb-news-ticker-btn-arrow"></span></button></div>'; $html .= '<div class="awb-news-ticker-btn-wrapper"><button class="awb-news-ticker-next-btn' . $additional_btn_classes . '" aria-label="' . $next_aria_label . '"><span class="awb-news-ticker-btn-arrow"></span></button></div>'; $html .= '</div>'; $html .= '<div class="awb-news-ticker-carousel-indicator"></div>'; } return $html; } /** * Used to set any other variables for use on front-end editor template. * * @since 3.5 * @return array */ public static function get_element_extras() { return [ 'is_rtl' => is_rtl(), ]; } /** * Load base CSS. * * @since 3.5 */ public function add_css_files() { FusionBuilder()->add_element_css( FUSION_BUILDER_PLUGIN_DIR . 'assets/css/shortcodes/news-ticker.min.css' ); } /** * Sets the necessary scripts. * * @since 3.5 * @return void */ public function on_first_render() { Fusion_Dynamic_JS::enqueue_script( 'fusion-news-ticker', FusionBuilder::$js_folder_url . '/general/fusion-news-ticker.js', FusionBuilder::$js_folder_path . '/general/fusion-news-ticker.js', [ 'jquery' ], FUSION_BUILDER_VERSION, true ); } } } new Fusion_News_Ticker(); } /** * Map shortcode to Fusion Builder * * @since 3.5 */ function fusion_news_ticker_map() { fusion_builder_map( fusion_builder_frontend_data( // Class reference. 'Fusion_News_Ticker', [ 'name' => esc_attr__( 'News Ticker', 'fusion-builder' ), 'shortcode' => 'fusion_news_ticker', 'icon' => 'fusiona-af-text', 'params' => fusion_news_ticker_get_param_settings(), 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ] ) ); } add_action( 'fusion_builder_wp_loaded', 'fusion_news_ticker_map' ); /** * Get the shortcode param settings. * * @return array */ function fusion_news_ticker_get_param_settings() { $builder_status = function_exists( 'is_fusion_editor' ) && is_fusion_editor(); $php_date_format_link = '<a href="' . esc_url( 'https://www.php.net/manual/en/datetime.format.php' ) . '">' . esc_html__( 'link', 'fusion-builder' ) . '</a>'; $post_types = $builder_status ? awb_get_post_types() : []; $param = []; $param[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'Ticker Title', 'fusion-builder' ), 'description' => esc_attr__( 'Set the ticker title.', 'fusion-builder' ), 'param_name' => 'ticker_title', ]; $param[] = [ 'type' => 'select', 'heading' => esc_attr__( 'Posts Type', 'fusion-builder' ), 'description' => esc_attr__( 'Select the type of posts displayed in the ticker.', 'fusion-builder' ), 'param_name' => 'post_type', 'default' => 'post', 'value' => $post_types, 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $param = array_merge( $param, fusion_news_ticker_get_taxonomies_settings() ); $param = array_merge( $param, fusion_news_ticker_get_order_by_settings() ); $param[] = [ 'type' => 'range', 'heading' => esc_attr__( 'Number Of Posts', 'fusion-builder' ), 'description' => esc_attr__( 'Select the maximum number of posts to be displayed in the ticker.', 'fusion-builder' ), 'param_name' => 'posts_number', 'value' => '7', 'min' => '3', 'max' => '15', 'step' => '1', 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $param[] = [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Show Date', 'fusion-builder' ), 'description' => esc_attr__( 'Select whether or not to show the date before the post.', 'fusion-builder' ), 'param_name' => 'show_date', 'default' => 'no', 'value' => [ 'yes' => esc_attr__( 'Yes', 'fusion-builder' ), 'no' => esc_attr__( 'No', 'fusion-builder' ), ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $param[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'Date Format', 'fusion-builder' ), /* translators: %s: a link. */ 'description' => sprintf( esc_attr__( 'Select the date format, including the separator. By default "M j: ". You can find a list of date format placeholders here: %s.', 'fusion-builder' ), $php_date_format_link ), 'param_name' => 'date_format', 'value' => '', 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], 'dependency' => [ [ 'element' => 'show_date', 'value' => 'yes', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Ticker Type', 'fusion-builder' ), 'description' => esc_attr__( 'Select the ticker type to display posts.', 'fusion-builder' ), 'param_name' => 'ticker_type', 'default' => 'marquee', 'value' => [ 'marquee' => esc_attr__( 'Running Ticker', 'fusion-builder' ), 'carousel' => esc_attr__( 'One At A Time', 'fusion-builder' ), ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $param[] = [ 'type' => 'range', 'heading' => esc_attr__( 'Ticker Speed', 'fusion-builder' ), 'description' => esc_attr__( 'Select the ticker speed, in pixels per second.', 'fusion-builder' ), 'param_name' => 'ticker_speed', 'value' => '75', 'min' => '50', 'max' => '150', 'step' => '1', 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'marquee', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'range', 'heading' => esc_attr__( 'Distance Between Posts', 'fusion-builder' ), 'description' => esc_attr__( 'Select the distance between posts.', 'fusion-builder' ), 'param_name' => 'posts_distance', 'value' => '50', 'min' => '25', 'max' => '200', 'step' => '1', 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'marquee', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'Separator', 'fusion-builder' ), 'description' => esc_attr__( 'Enter the separator text between the posts.', 'fusion-builder' ), 'param_name' => 'separator', 'value' => '', 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'marquee', 'operator' => '==', ], ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $param[] = [ 'type' => 'range', 'heading' => esc_attr__( 'Display Duration', 'fusion-builder' ), 'description' => esc_attr__( 'Select how much time a post should be displayed, before switching to the next post. In seconds.', 'fusion-builder' ), 'param_name' => 'carousel_display_time', 'value' => '6', 'min' => '0.1', 'max' => '20', 'step' => '0.1', 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Link Target', 'fusion-builder' ), 'description' => esc_html__( 'Controls how the link will open.', 'fusion-builder' ), 'param_name' => 'link_target', 'value' => [ '_self' => esc_html__( 'Same Window/Tab', 'fusion-builder' ), '_blank' => esc_html__( 'New Window/Tab', 'fusion-builder' ), ], 'default' => '_self', ]; $param[] = [ 'type' => 'checkbox_button_set', 'heading' => esc_attr__( 'Element Visibility', 'fusion-builder' ), 'description' => esc_html__( 'Choose to show or hide the element on small, medium or large screens. You can choose more than one at a time.', 'fusion-builder' ), 'param_name' => 'hide_on_mobile', 'value' => fusion_builder_visibility_options( 'full' ), 'default' => fusion_builder_default_visibility( 'array' ), ]; $param[] = [ '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' => '', ]; $param[] = [ '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' => '', ]; // Design. $param[] = [ 'type' => 'typography', 'remove_from_atts' => true, 'global' => true, 'heading' => esc_attr__( 'Typography', 'fusion-builder' ), 'description' => esc_html__( 'Controls the typography.', 'fusion-builder' ), 'param_name' => 'ticker_typography', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'choices' => [ 'font-family' => 'ticker_font', 'font-size' => 'font_size', 'line-height' => 'line_height', 'letter-spacing' => 'letter_spacing', 'text-transform' => 'text_transform', ], 'default' => [ 'font-family' => '', 'variant' => '', 'font-size' => '', 'line-height' => '2.5', 'letter-spacing' => '', 'text-transform' => '', ], ]; $param[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'Height', 'fusion-builder' ), 'description' => esc_attr__( 'Enter value including any valid CSS unit, ex: 20px. The height can also be changed only from typography line-height setting, and needs to be higher than computed value of line-height.', 'fusion-builder' ), 'param_name' => 'ticker_height', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), ]; $param[] = [ 'type' => 'colorpickeralpha', 'heading' => esc_attr__( 'Title Font Color', 'fusion-builder' ), 'description' => esc_attr__( 'Select the font color of the title.', 'fusion-builder' ), 'param_name' => 'title_font_color', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), ]; $param[] = [ 'type' => 'colorpickeralpha', 'heading' => esc_attr__( 'Title Background Color', 'fusion-builder' ), 'description' => esc_attr__( 'Select the background color of the title.', 'fusion-builder' ), 'param_name' => 'title_background_color', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), ]; $param[] = [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Title Shape', 'fusion-builder' ), 'description' => esc_attr__( 'Select the title shape.', 'fusion-builder' ), 'param_name' => 'title_shape', 'default' => 'none', 'value' => [ 'none' => esc_attr__( 'None', 'fusion-builder' ), 'rounded' => esc_attr__( 'Rounded', 'fusion-builder' ), 'triangle' => esc_attr__( 'Triangle', 'fusion-builder' ), ], 'group' => esc_attr__( 'Design', 'fusion-builder' ), ]; $param[] = [ 'type' => 'dimension', 'remove_from_atts' => true, 'heading' => esc_attr__( 'Title Padding', 'fusion-builder' ), 'description' => esc_attr__( 'Enter padding for the title.', 'fusion-builder' ), 'param_name' => 'title_padding', 'group' => esc_html__( 'Design', 'fusion-builder' ), 'value' => [ 'title_padding_left' => '', 'title_padding_right' => '', ], ]; $param[] = [ 'type' => 'colorpickeralpha', 'heading' => esc_attr__( 'Ticker Font Color', 'fusion-builder' ), 'description' => esc_attr__( 'Select the font color of the ticker.', 'fusion-builder' ), 'param_name' => 'ticker_font_color', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'states' => [ 'hover' => [ 'label' => __( 'Hover', 'fusion-builder' ), 'param_name' => 'ticker_hover_font_color', 'preview' => [ 'selector' => '.awb-news-ticker-link', 'type' => 'class', 'toggle' => 'hover', ], ], ], 'connect-state' => [ 'ticker_background_color', 'ticker_indicators_color' ], ]; $param[] = [ 'type' => 'colorpickeralpha', 'heading' => esc_attr__( 'Ticker Background Color', 'fusion-builder' ), 'description' => esc_attr__( 'Select the background color of the ticker.', 'fusion-builder' ), 'param_name' => 'ticker_background_color', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'states' => [ 'hover' => [ 'label' => __( 'Hover', 'fusion-builder' ), 'param_name' => 'ticker_background_hover_color', 'preview' => [ 'selector' => '.awb-news-ticker', 'type' => 'class', 'toggle' => 'hover', ], ], ], 'connect-state' => [ 'ticker_font_color', 'ticker_indicators_color' ], ]; $param[] = [ 'type' => 'colorpickeralpha', 'heading' => esc_attr__( 'Ticker Indicators Color', 'fusion-builder' ), 'description' => esc_attr__( 'Select the color of the ticker indicators and next/previous arrows.', 'fusion-builder' ), 'param_name' => 'ticker_indicators_color', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], ], 'states' => [ 'hover' => [ 'label' => __( 'Hover', 'fusion-builder' ), 'param_name' => 'ticker_indicators_hover_color', 'preview' => [ 'selector' => '.awb-news-ticker-next-btn, .awb-news-ticker-prev-btn', 'type' => 'class', 'toggle' => 'hover', ], ], ], 'connect-state' => [ 'ticker_background_color', 'ticker_font_color' ], ]; $param[] = [ 'type' => 'range', 'heading' => esc_attr__( 'Progress Indicator Bar Height', 'fusion-builder' ), 'description' => esc_attr__( 'Select the height of the indicator bar.', 'fusion-builder' ), 'param_name' => 'carousel_bar_height', 'value' => '3', 'min' => '1', 'max' => '10', 'step' => '1', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Previous/Next Arrows Style', 'fusion-builder' ), 'description' => esc_attr__( 'Select the style of the carousel arrows.', 'fusion-builder' ), 'param_name' => 'carousel_arrows_style', 'default' => 'none', 'value' => [ 'none' => esc_attr__( 'Normal', 'fusion-builder' ), 'border' => esc_attr__( 'Bordered', 'fusion-builder' ), ], 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'dimension', 'remove_from_atts' => true, 'heading' => esc_attr__( 'Arrow Buttons Padding', 'fusion-builder' ), 'description' => esc_attr__( 'In pixels or percentage, ex: 10px or 10%. You can see the padding, by triggering bordering arrow style in the upper setting.', 'fusion-builder' ), 'param_name' => 'button_padding', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'value' => [ 'btn_padding_top' => '', 'btn_padding_right' => '', 'btn_padding_bottom' => '', 'btn_padding_left' => '', ], 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'textfield', 'heading' => esc_attr__( 'Arrows Border Radius', 'fusion-builder' ), 'description' => esc_attr__( 'Enter value including any valid CSS unit, ex: 20px, or 50% to be perfectly rounded.', 'fusion-builder' ), 'param_name' => 'carousel_btn_border_radius', 'value' => '', 'group' => esc_attr__( 'Design', 'fusion-builder' ), 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], [ 'element' => 'carousel_arrows_style', 'value' => 'border', 'operator' => '==', ], ], ]; $param[] = [ 'type' => 'dimension', 'remove_from_atts' => true, 'heading' => esc_attr__( 'Ticker Padding', 'fusion-builder' ), 'description' => esc_attr__( 'Controls the padding of the ticker.', 'fusion-builder' ), 'param_name' => 'ticker_padding', 'group' => esc_html__( 'Design', 'fusion-builder' ), 'value' => [ 'ticker_padding_left' => '', 'ticker_padding_right' => '', ], 'dependency' => [ [ 'element' => 'ticker_type', 'value' => 'carousel', 'operator' => '==', ], ], ]; $param['fusion_margin_placeholder'] = [ 'param_name' => 'margin', 'heading' => esc_attr__( 'Element Margin', 'fusion-builder' ), 'value' => [ 'margin_top' => '', 'margin_right' => '', 'margin_bottom' => '', 'margin_left' => '', ], ]; $param['fusion_border_radius_placeholder'] = [ 'heading' => esc_attr__( 'Element Border Radius', 'fusion-builder' ), ]; $param['fusion_box_shadow_placeholder'] = []; $param['fusion_animation_placeholder'] = [ 'preview_selector' => '.awb-news-ticker', ]; return $param; } /** * Create the dynamic shortcode settings for categories and tags. * * @return array */ function fusion_news_ticker_get_taxonomies_settings() { $builder_status = function_exists( 'is_fusion_editor' ) && is_fusion_editor(); $post_types = $builder_status ? awb_get_post_types() : []; $settings = []; $taxonomy_map = []; $post_taxonomies = []; if ( is_array( $post_types ) ) { foreach ( $post_types as $post_type => $post_type_label ) { $new_taxonomies = get_object_taxonomies( $post_type, 'objects' ); $taxonomy_map[ $post_type ] = [ 'all' ]; foreach ( $new_taxonomies as $new_taxonomy ) { $post_taxonomies[ $new_taxonomy->name ] = $new_taxonomy; $taxonomy_map[ $post_type ][] = $new_taxonomy->name; } } } $taxonomy_options = [ 'all' => esc_html__( 'All', 'fusion-builder' ), ]; foreach ( $post_taxonomies as $taxonomy ) { $taxonomy_options[ $taxonomy->name ] = ucwords( esc_html( $taxonomy->label ) ); } $settings [] = [ 'type' => 'select', 'heading' => esc_attr__( 'Pull Posts By', 'fusion-builder' ), 'description' => esc_attr__( 'Choose the taxonomy to pull posts by.', 'fusion-builder' ), 'param_name' => 'pull_by', 'default' => 'all', 'value' => $taxonomy_options, 'conditions' => [ 'option' => 'post_type', 'map' => $taxonomy_map, ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; // Foreach taxonomy, add 2 options, one to include terms, and one to exclude. foreach ( $taxonomy_options as $taxonomy_name => $taxonomy_label ) { if ( 'all' === $taxonomy_name ) { continue; } $field_type = 'ajax_select'; $ajax = 'fusion_search_query'; $ajax_params = [ 'taxonomy' => $taxonomy_name, ]; $selection = []; if ( 25 > wp_count_terms( $taxonomy_name ) ) { $ajax = ''; $field_type = 'multiple_select'; $terms = get_terms( [ 'taxonomy' => $taxonomy_name, 'hide_empty' => true, ] ); // All terms. foreach ( $terms as $term ) { $selection[ $term->term_id ] = $term->name; } } $settings [] = [ 'type' => $field_type, /* translators: %s - a taxonomy name. */ 'heading' => sprintf( esc_html__( 'Include %s', 'fusion-builder' ), $taxonomy_label ), 'description' => esc_html__( 'Select the taxonomies to include, or leave blank for all. If the taxonomy is hierarchical, it will also include posts within children taxonomy.', 'fusion-builder' ), 'placeholder' => ucwords( $taxonomy_label ), 'param_name' => 'dynamic_tax_include_' . $taxonomy_name, 'value' => $selection, 'default' => '', 'ajax' => $ajax, 'ajax_params' => $ajax_params, 'dependency' => [ [ 'element' => 'pull_by', 'value' => $taxonomy_name, 'operator' => '==', ], ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $settings [] = [ 'type' => $field_type, /* translators: %s - a taxonomy name. */ 'heading' => sprintf( esc_html__( 'Exclude %s', 'fusion-builder' ), $taxonomy_label ), 'description' => esc_html__( 'Select the taxonomies to exclude, or leave blank for none. If the taxonomy is hierarchical, it will also exclude posts within children taxonomy.', 'fusion-builder' ), 'placeholder' => ucwords( $taxonomy_label ), 'param_name' => 'dynamic_tax_exclude_' . $taxonomy_name, 'value' => $selection, 'default' => '', 'ajax' => $ajax, 'ajax_params' => $ajax_params, 'dependency' => [ [ 'element' => 'pull_by', 'value' => $taxonomy_name, 'operator' => '==', ], ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; } return $settings; } /** * Get the orderby settings. * * @since 3.5 * @return array */ function fusion_news_ticker_get_order_by_settings() { $settings = []; $builder_status = function_exists( 'is_fusion_editor' ) && is_fusion_editor(); $post_types = $builder_status ? awb_get_post_types() : []; $normal_posts_orderby = [ 'date' => esc_attr__( 'Date', 'fusion-builder' ), 'title' => esc_attr__( 'Post Title', 'fusion-builder' ), 'name' => esc_attr__( 'Post Slug', 'fusion-builder' ), 'author' => esc_attr__( 'Author', 'fusion-builder' ), 'comment_count' => esc_attr__( 'Number of Comments', 'fusion-builder' ), 'modified' => esc_attr__( 'Last Modified', 'fusion-builder' ), 'rand' => esc_attr__( 'Random', 'fusion-builder' ), ]; $normal_posts_orderby_keys = array_keys( $normal_posts_orderby ); $additional_event_posts_orderby = [ 'upcoming_events' => esc_attr__( 'Upcoming Events', 'fusion-builder' ), ]; $additional_event_posts_orderby_keys = array_keys( $additional_event_posts_orderby ); $conditions_map = []; foreach ( $post_types as $post_type => $post_type_label ) { if ( 'tribe_events' === $post_type ) { $conditions_map[ $post_type ] = array_merge( $additional_event_posts_orderby_keys, $normal_posts_orderby_keys ); } else { $conditions_map[ $post_type ] = $normal_posts_orderby_keys; } } $settings[] = [ 'type' => 'select', 'heading' => esc_attr__( 'Order By', 'fusion-builder' ), 'description' => esc_attr__( 'Defines how posts should be ordered. Note that custom post types like "Events", can have additionally ordering choices.', 'fusion-builder' ), 'param_name' => 'orderby', 'default' => 'date', 'conditions' => [ 'option' => 'post_type', 'map' => $conditions_map, ], 'value' => array_merge( $additional_event_posts_orderby, $normal_posts_orderby ), 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; $settings[] = [ 'type' => 'radio_button_set', 'heading' => esc_attr__( 'Order', 'fusion-builder' ), 'description' => esc_attr__( 'Define the sorting order of posts.', 'fusion-builder' ), 'param_name' => 'order', 'default' => 'DESC', 'value' => [ 'DESC' => esc_attr__( 'Descending', 'fusion-builder' ), 'ASC' => esc_attr__( 'Ascending', 'fusion-builder' ), ], 'dependency' => [ [ 'element' => 'orderby', 'value' => 'rand', 'operator' => '!=', ], [ 'element' => 'orderby', 'value' => 'upcoming_events', 'operator' => '!=', ], ], 'callback' => [ 'function' => 'fusion_ajax', 'action' => 'get_fusion_news_ticker_posts', 'ajax' => true, ], ]; return $settings; }
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare