function aione_vertical_carousel_shortcode($atts) { // Original Attributes, for filters $original_atts = $atts; $vcarousel_id = rand(111111, 999999); // Pull in shortcode attributes and set defaults $atts = shortcode_atts(array('title' => '', 'author' => '', 'category' => '', 'date_format' => '(n/j/Y)', 'display_posts_off' => false, 'exclude_current' => false, 'id' => false, 'ignore_sticky_posts' => false, 'image_size' => false, 'include_title' => true, 'include_author' => false, 'include_content' => false, 'include_date' => false, 'include_excerpt' => false, 'meta_key' => '', 'meta_value' => '', 'no_posts_message' => '', 'offset' => 0, 'order' => 'DESC', 'orderby' => 'date', 'post_parent' => false, 'post_status' => 'publish', 'post_type' => 'post', 'posts_per_page' => '10', 'tag' => '', 'tax_operator' => 'IN', 'tax_term' => false, 'taxonomy' => false, 'wrapper' => 'div', 'wrapper_class' => 'vcarousel', 'wrapper_id' => 'vcarousel-' . $vcarousel_id), $atts, 'vcarousel'); wp_register_style('vcarousel', plugins_url('/css/jquery.bxslider.css', __FILE__), false, '1.0.0', 'all'); wp_enqueue_style('vcarousel'); wp_register_script('vcarousel', plugins_url('/js/jquery.bxslider.min.js', __FILE__), array('jquery'), '1.0.0'); wp_enqueue_script('vcarousel'); // End early if shortcode should be turned off if ($atts['display_posts_off']) { return; } $shortcode_title = sanitize_text_field($atts['title']); $author = sanitize_text_field($atts['author']); $category = sanitize_text_field($atts['category']); $date_format = sanitize_text_field($atts['date_format']); $exclude_current = be_display_posts_bool($atts['exclude_current']); $id = $atts['id']; // Sanitized later as an array of integers $ignore_sticky_posts = be_display_posts_bool($atts['ignore_sticky_posts']); $image_size = sanitize_key($atts['image_size']); $include_title = be_display_posts_bool($atts['include_title']); $include_author = be_display_posts_bool($atts['include_author']); $include_content = be_display_posts_bool($atts['include_content']); $include_date = be_display_posts_bool($atts['include_date']); $include_excerpt = be_display_posts_bool($atts['include_excerpt']); $meta_key = sanitize_text_field($atts['meta_key']); $meta_value = sanitize_text_field($atts['meta_value']); $no_posts_message = sanitize_text_field($atts['no_posts_message']); $offset = intval($atts['offset']); $order = sanitize_key($atts['order']); $orderby = sanitize_key($atts['orderby']); $post_parent = $atts['post_parent']; // Validated later, after check for 'current' $post_status = $atts['post_status']; // Validated later as one of a few values $post_type = sanitize_text_field($atts['post_type']); $posts_per_page = intval($atts['posts_per_page']); $tag = sanitize_text_field($atts['tag']); $tax_operator = $atts['tax_operator']; // Validated later as one of a few values $tax_term = sanitize_text_field($atts['tax_term']); $taxonomy = sanitize_key($atts['taxonomy']); $wrapper = sanitize_text_field($atts['wrapper']); $wrapper_class = sanitize_html_class($atts['wrapper_class']); if (!empty($wrapper_class)) { $wrapper_class = ' class="' . $wrapper_class . '"'; } $wrapper_id = sanitize_html_class($atts['wrapper_id']); if (!empty($wrapper_id)) { $wrapper_id = ' id="' . $wrapper_id . '"'; } // Set up initial query for post $args = array('category_name' => $category, 'order' => $order, 'orderby' => $orderby, 'post_type' => explode(',', $post_type), 'posts_per_page' => $posts_per_page, 'tag' => $tag); // Ignore Sticky Posts if ($ignore_sticky_posts) { $args['ignore_sticky_posts'] = true; } // Meta key (for ordering) if (!empty($meta_key)) { $args['meta_key'] = $meta_key; } // Meta value (for simple meta queries) if (!empty($meta_value)) { $args['meta_value'] = $meta_value; } // If Post IDs if ($id) { $posts_in = array_map('intval', explode(',', $id)); $args['post__in'] = $posts_in; } // If Exclude Current if ($exclude_current) { $args['post__not_in'] = array(get_the_ID()); } // Post Author if (!empty($author)) { $args['author_name'] = $author; } // Offset if (!empty($offset)) { $args['offset'] = $offset; } // Post Status $post_status = explode(', ', $post_status); $validated = array(); $available = array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash', 'any'); foreach ($post_status as $unvalidated) { if (in_array($unvalidated, $available)) { $validated[] = $unvalidated; } } if (!empty($validated)) { $args['post_status'] = $validated; } // If taxonomy attributes, create a taxonomy query if (!empty($taxonomy) && !empty($tax_term)) { // Term string to array $tax_term = explode(', ', $tax_term); // Validate operator if (!in_array($tax_operator, array('IN', 'NOT IN', 'AND'))) { $tax_operator = 'IN'; } $tax_args = array('tax_query' => array(array('taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $tax_term, 'operator' => $tax_operator))); // Check for multiple taxonomy queries $count = 2; $more_tax_queries = false; while (isset($original_atts['taxonomy_' . $count]) && !empty($original_atts['taxonomy_' . $count]) && isset($original_atts['tax_' . $count . '_term']) && !empty($original_atts['tax_' . $count . '_term'])) { // Sanitize values $more_tax_queries = true; $taxonomy = sanitize_key($original_atts['taxonomy_' . $count]); $terms = explode(', ', sanitize_text_field($original_atts['tax_' . $count . '_term'])); $tax_operator = isset($original_atts['tax_' . $count . '_operator']) ? $original_atts['tax_' . $count . '_operator'] : 'IN'; $tax_operator = in_array($tax_operator, array('IN', 'NOT IN', 'AND')) ? $tax_operator : 'IN'; $tax_args['tax_query'][] = array('taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $terms, 'operator' => $tax_operator); $count++; } if ($more_tax_queries) { $tax_relation = 'AND'; if (isset($original_atts['tax_relation']) && in_array($original_atts['tax_relation'], array('AND', 'OR'))) { $tax_relation = $original_atts['tax_relation']; } $args['tax_query']['relation'] = $tax_relation; } $args = array_merge($args, $tax_args); } // If post parent attribute, set up parent if ($post_parent) { if ('current' == $post_parent) { global $post; $post_parent = get_the_ID(); } $args['post_parent'] = intval($post_parent); } // Set up html elements used to wrap the posts. // Default is ul/li, but can also be ol/li and div/div $wrapper_options = array('ul', 'ol', 'div'); if (!in_array($wrapper, $wrapper_options)) { $wrapper = 'ul'; } $inner_wrapper = 'div' == $wrapper ? 'div' : 'li'; $listing = new WP_Query(apply_filters('display_posts_shortcode_args', $args, $original_atts)); if (!$listing->have_posts()) { return apply_filters('display_posts_shortcode_no_results', wpautop($no_posts_message)); } $inner = ''; while ($listing->have_posts()) { $listing->the_post(); global $post; $image = $date = $author = $excerpt = $content = ''; if ($include_title) { $title = '<a class="title" href="' . apply_filters('the_permalink', get_permalink()) . '">' . get_the_title() . '</a>'; } if ($image_size && has_post_thumbnail()) { $image = '<a class="image" href="' . get_permalink() . '">' . get_the_post_thumbnail(get_the_ID(), $image_size) . '</a> '; } if ($include_date) { $date = ' <span class="date">' . get_the_date($date_format) . '</span>'; } if ($include_author) { $author = apply_filters('display_posts_shortcode_author', ' <span class="author">by ' . get_the_author() . '</span>'); } if ($include_excerpt) { $excerpt = ' <span class="excerpt-dash">-</span> <span class="excerpt">' . get_the_excerpt() . '</span>'; } if ($include_content) { add_filter('shortcode_atts_display-posts', 'be_display_posts_off', 10, 3); $content = '<div class="content">' . apply_filters('the_content', get_the_content()) . '</div>'; remove_filter('shortcode_atts_display-posts', 'be_display_posts_off', 10, 3); } $class = array('listing-item'); $class = sanitize_html_class(apply_filters('display_posts_shortcode_post_class', $class, $post, $listing, $original_atts)); $output = '<' . $inner_wrapper . ' class="' . implode(' ', $class) . '">' . $image . $title . $date . $author . $excerpt . $content . '</' . $inner_wrapper . '>'; // If post is set to private, only show to logged in users if ('private' == get_post_status(get_the_ID()) && !current_user_can('read_private_posts')) { $output = ''; } $inner .= apply_filters('display_posts_shortcode_output', $output, $original_atts, $image, $title, $date, $excerpt, $inner_wrapper, $content, $class); } wp_reset_postdata(); $open = apply_filters('display_posts_shortcode_wrapper_open', '<' . $wrapper . $wrapper_class . $wrapper_id . '>', $original_atts); $close = apply_filters('display_posts_shortcode_wrapper_close', '</' . $wrapper . '>', $original_atts); $return = $open; if ($shortcode_title) { $title_tag = apply_filters('display_posts_shortcode_title_tag', 'h2', $original_atts); $return .= '<' . $title_tag . ' class="display-posts-title">' . $shortcode_title . '</' . $title_tag . '>' . "\n"; } $return .= $inner . $close; $return .= "\n\t <script type='text/javascript'>\n\t jQuery(document).ready(function(){\n\t jQuery('#vcarousel-" . $vcarousel_id . "').bxSlider({\n\t mode: 'vertical',\n\t speed:1000,\n\t slideMargin:5,\n\t\n\t minSlides: 4,\n\t maxSlides: 4,\n\t moveSlides: 1,\n\t //slideWidth: 600,\n\t\n\t //startSlide:0,\n\t //randomStart:false,\n\t slideSelector:'div.listing-item',\n\t infiniteLoop:true,\n\t hideControlOnEnd:true,\n\t //easing:null,\n\t //captions:false,\n\t //ticker:true,\n\t //tickerHover:true,\n\t adaptiveHeight:true,\n\t adaptiveHeightSpeed:500,\n\t //video:false,\n\t responsive:true,\n\t useCSS:true,\n\t preloadImages:true,\n\t touchEnabled:true,\n\t oneToOneTouch:true,\n\t preventDefaultSwipeY:true,\n\t auto:true\n\t\n\t });\n\t });\n\t </script>\n "; return $return; }
function be_display_posts_shortcode($atts) { // Original Attributes, for filters $original_atts = $atts; // Pull in shortcode attributes and set defaults $atts = shortcode_atts(array('title' => '', 'author' => '', 'category' => '', 'date_format' => '(n/j/Y)', 'display_posts_off' => false, 'exclude_current' => false, 'id' => false, 'ignore_sticky_posts' => false, 'image_size' => false, 'include_title' => true, 'include_author' => false, 'include_content' => false, 'include_date' => false, 'include_excerpt' => false, 'meta_key' => '', 'meta_value' => '', 'no_posts_message' => '', 'offset' => 0, 'order' => 'DESC', 'orderby' => 'date', 'post_parent' => false, 'post_status' => 'publish', 'post_type' => 'post', 'posts_per_page' => '10', 'tag' => '', 'tax_operator' => 'IN', 'tax_term' => false, 'taxonomy' => false, 'wrapper' => 'ul', 'wrapper_class' => 'display-posts-listing', 'wrapper_id' => false), $atts, 'display-posts'); // End early if shortcode should be turned off if ($atts['display_posts_off']) { return; } $shortcode_title = sanitize_text_field($atts['title']); $author = sanitize_text_field($atts['author']); $category = sanitize_text_field($atts['category']); $date_format = sanitize_text_field($atts['date_format']); $exclude_current = be_display_posts_bool($atts['exclude_current']); $id = $atts['id']; // Sanitized later as an array of integers $ignore_sticky_posts = be_display_posts_bool($atts['ignore_sticky_posts']); $image_size = sanitize_key($atts['image_size']); $include_title = be_display_posts_bool($atts['include_title']); $include_author = be_display_posts_bool($atts['include_author']); $include_content = be_display_posts_bool($atts['include_content']); $include_date = be_display_posts_bool($atts['include_date']); $include_excerpt = be_display_posts_bool($atts['include_excerpt']); $meta_key = sanitize_text_field($atts['meta_key']); $meta_value = sanitize_text_field($atts['meta_value']); $no_posts_message = sanitize_text_field($atts['no_posts_message']); $offset = intval($atts['offset']); $order = sanitize_key($atts['order']); $orderby = sanitize_key($atts['orderby']); $post_parent = $atts['post_parent']; // Validated later, after check for 'current' $post_status = $atts['post_status']; // Validated later as one of a few values $post_type = sanitize_text_field($atts['post_type']); $posts_per_page = intval($atts['posts_per_page']); $tag = sanitize_text_field($atts['tag']); $tax_operator = $atts['tax_operator']; // Validated later as one of a few values $tax_term = sanitize_text_field($atts['tax_term']); $taxonomy = sanitize_key($atts['taxonomy']); $wrapper = sanitize_text_field($atts['wrapper']); $wrapper_class = sanitize_html_class($atts['wrapper_class']); if (!empty($wrapper_class)) { $wrapper_class = ' class="' . $wrapper_class . '"'; } $wrapper_id = sanitize_html_class($atts['wrapper_id']); if (!empty($wrapper_id)) { $wrapper_id = ' id="' . $wrapper_id . '"'; } // Set up initial query for post $args = array('category_name' => $category, 'order' => $order, 'orderby' => $orderby, 'post_type' => explode(',', $post_type), 'posts_per_page' => $posts_per_page, 'tag' => $tag); // Ignore Sticky Posts if ($ignore_sticky_posts) { $args['ignore_sticky_posts'] = true; } // Meta key (for ordering) if (!empty($meta_key)) { $args['meta_key'] = $meta_key; } // Meta value (for simple meta queries) if (!empty($meta_value)) { $args['meta_value'] = $meta_value; } // If Post IDs if ($id) { $posts_in = array_map('intval', explode(',', $id)); $args['post__in'] = $posts_in; } // If Exclude Current if ($exclude_current) { $args['post__not_in'] = array(get_the_ID()); } // Post Author if (!empty($author)) { $args['author_name'] = $author; } // Offset if (!empty($offset)) { $args['offset'] = $offset; } // Post Status $post_status = explode(', ', $post_status); $validated = array(); $available = array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash', 'any'); foreach ($post_status as $unvalidated) { if (in_array($unvalidated, $available)) { $validated[] = $unvalidated; } } if (!empty($validated)) { $args['post_status'] = $validated; } // If taxonomy attributes, create a taxonomy query if (!empty($taxonomy) && !empty($tax_term)) { // Term string to array $tax_term = explode(', ', $tax_term); // Validate operator if (!in_array($tax_operator, array('IN', 'NOT IN', 'AND'))) { $tax_operator = 'IN'; } $tax_args = array('tax_query' => array(array('taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $tax_term, 'operator' => $tax_operator))); // Check for multiple taxonomy queries $count = 2; $more_tax_queries = false; while (isset($original_atts['taxonomy_' . $count]) && !empty($original_atts['taxonomy_' . $count]) && isset($original_atts['tax_' . $count . '_term']) && !empty($original_atts['tax_' . $count . '_term'])) { // Sanitize values $more_tax_queries = true; $taxonomy = sanitize_key($original_atts['taxonomy_' . $count]); $terms = explode(', ', sanitize_text_field($original_atts['tax_' . $count . '_term'])); $tax_operator = isset($original_atts['tax_' . $count . '_operator']) ? $original_atts['tax_' . $count . '_operator'] : 'IN'; $tax_operator = in_array($tax_operator, array('IN', 'NOT IN', 'AND')) ? $tax_operator : 'IN'; $tax_args['tax_query'][] = array('taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $terms, 'operator' => $tax_operator); $count++; } if ($more_tax_queries) { $tax_relation = 'AND'; if (isset($original_atts['tax_relation']) && in_array($original_atts['tax_relation'], array('AND', 'OR'))) { $tax_relation = $original_atts['tax_relation']; } $args['tax_query']['relation'] = $tax_relation; } $args = array_merge($args, $tax_args); } // If post parent attribute, set up parent if ($post_parent) { if ('current' == $post_parent) { global $post; $post_parent = get_the_ID(); } $args['post_parent'] = intval($post_parent); } // Set up html elements used to wrap the posts. // Default is ul/li, but can also be ol/li and div/div $wrapper_options = array('ul', 'ol', 'div'); if (!in_array($wrapper, $wrapper_options)) { $wrapper = 'ul'; } $inner_wrapper = 'div' == $wrapper ? 'div' : 'li'; $listing = new WP_Query(apply_filters('display_posts_shortcode_args', $args, $original_atts)); if (!$listing->have_posts()) { return apply_filters('display_posts_shortcode_no_results', wpautop($no_posts_message)); } $inner = ''; while ($listing->have_posts()) { $listing->the_post(); global $post; $image = $date = $author = $excerpt = $content = ''; if ($include_title) { $title = '<a class="title" href="' . apply_filters('the_permalink', get_permalink()) . '">' . get_the_title() . '</a>'; } if ($image_size && has_post_thumbnail()) { $image = '<a class="image" href="' . get_permalink() . '">' . get_the_post_thumbnail(get_the_ID(), $image_size) . '</a> '; } if ($include_date) { $date = ' <span class="date">' . get_the_date($date_format) . '</span>'; } if ($include_author) { $author = apply_filters('display_posts_shortcode_author', ' <span class="author">by ' . get_the_author() . '</span>'); } if ($include_excerpt) { $excerpt = ' <span class="excerpt-dash">-</span> <span class="excerpt">' . get_the_excerpt() . '</span>'; } if ($include_content) { add_filter('shortcode_atts_display-posts', 'be_display_posts_off', 10, 3); $content = '<div class="content">' . apply_filters('the_content', get_the_content()) . '</div>'; remove_filter('shortcode_atts_display-posts', 'be_display_posts_off', 10, 3); } $class = array('listing-item'); $class = sanitize_html_class(apply_filters('display_posts_shortcode_post_class', $class, $post, $listing, $original_atts)); $output = '<' . $inner_wrapper . ' class="' . implode(' ', $class) . '">' . $image . $title . $date . $author . $excerpt . $content . '</' . $inner_wrapper . '>'; // If post is set to private, only show to logged in users if ('private' == get_post_status(get_the_ID()) && !current_user_can('read_private_posts')) { $output = ''; } $inner .= apply_filters('display_posts_shortcode_output', $output, $original_atts, $image, $title, $date, $excerpt, $inner_wrapper, $content, $class); } wp_reset_postdata(); $open = apply_filters('display_posts_shortcode_wrapper_open', '<' . $wrapper . $wrapper_class . $wrapper_id . '>', $original_atts); $close = apply_filters('display_posts_shortcode_wrapper_close', '</' . $wrapper . '>', $original_atts); $return = $open; if ($shortcode_title) { $title_tag = apply_filters('display_posts_shortcode_title_tag', 'h2', $original_atts); $return .= '<' . $title_tag . ' class="display-posts-title">' . $shortcode_title . '</' . $title_tag . '>' . "\n"; } $return .= $inner . $close; return $return; }