/** * Populates the parameter selectbox conditionally for the logic shortcode. * * @since 1.1-beta-2 * @access private * @param array $atts The dependent attributes. * @return array The selectbox options. */ function _render_sc_logic_param_populate($atts) { $response = array('options' => array(), 'no_options_text' => false, 'description' => false); switch ($atts['arg1']) { case 'single': $response['options'] = render_sc_post_list(array('post_type' => 'post')); $response['no_options_text'] = __('No posts available.', 'Render'); $response['description'] = __('Leave blank to just check if this is any post.', 'Render'); break; case 'page': $response['options'] = render_sc_post_list(array('post_type' => 'page')); $response['no_options_text'] = __('No pages available.', 'Render'); $response['description'] = __('Leave blank to just check if this is any page.', 'Render'); break; case 'category': $response['options'] = render_sc_term_list(array('taxonomies' => array('category'))); $response['no_options_text'] = __('No categories available.', 'Render'); $response['description'] = __('Leave blank to just check if this is any category page.', 'Render'); break; case 'tag': $response['options'] = render_sc_term_list(array('taxonomies' => array('post_tag'))); $response['no_options_text'] = __('No tags available.', 'Render'); $response['description'] = __('Leave blank to just check if this is any tag page.', 'Render'); break; case 'tax': $response['options'] = render_sc_term_list(); $response['no_options_text'] = __('No taxonomies available.', 'Render'); $response['description'] = __('Leave blank to just check if this is any taxonomy page.', 'Render'); break; case 'author': $response['options'] = render_sc_user_list('edit_posts'); $response['no_options_text'] = __('No authors available.', 'Render'); $response['description'] = __('Leave blank to just check if this is any author archive.', 'Render'); break; } // Convert the options to HTML $response['options'] = !empty($response['options']) ? render_build_options_html($response['options']) : ''; return $response; }
<?php /** * Contains all Render packaged shortcodes within the Query category. * * @since 1.0.0 * * @package Render * @subpackage Shortcodes */ // Exit if loaded directly if (!defined('ABSPATH')) { die; } // Loops through each shortcode and adds it to Render foreach (array(array('code' => 'render_query', 'function' => '_render_query', 'title' => __('Query', 'Render'), 'description' => __('Outputs a list of posts.', 'Render'), 'tags' => 'data loop', 'atts' => array(array('type' => 'section_break', 'label' => __('Refine Search', 'Render')), 'author' => array('label' => __('Author', 'Render'), 'type' => 'selectbox', 'properties' => array('placeholder' => __('Any author', 'Render'), 'options' => render_sc_user_list('edit_posts'))), 'category' => array('label' => __('Category', 'Render'), 'type' => 'selectbox', 'properties' => array('no_options' => __('No categories available.', 'Render'), 'placeholder' => __('Any category', 'Render'), 'callback' => array('function' => 'render_categories_dropdown'))), 'tag' => array('label' => __('Tag', 'Render'), 'type' => 'selectbox', 'properties' => array('no_options' => __('No tags available.', 'Render'), 'placeholder' => __('-- None --', 'Render'), 'callback' => array('function' => 'render_tags_dropdown'))), 'post_type' => render_sc_attr_template('post_type_list', array()), 'include' => render_sc_attr_template('post_list', array('label' => __('Include', 'Render'), 'properties' => array('multi' => true, 'placeholder' => 'Select an option'), 'conditional' => array('populate' => array('atts' => array('post_type'), 'callback' => 'render_sc_populate_post_type')))), 'exclude' => render_sc_attr_template('post_list', array('label' => __('Exclude', 'Render'), 'properties' => array('multi' => true, 'placeholder' => 'Select an option'), 'conditional' => array('populate' => array('atts' => array('post_type'), 'callback' => 'render_sc_populate_post_type')))), 'numberposts' => array('label' => __('Count', 'Render'), 'description' => __('Max number of posts to show.', 'Render'), 'type' => 'counter', 'default' => 5, 'properties' => array('max' => 50)), array('type' => 'section_break', 'label' => __('Order', 'Render')), 'order' => render_sc_attr_template('post_order'), 'orderby' => render_sc_attr_template('post_orderby'), 'post_status' => array('label' => __('Post Status', 'Render'), 'type' => 'selectbox', 'properties' => array('placeholder' => __('Any status', 'Render'), 'callback' => array('function' => 'get_post_stati')), 'advanced' => true), 'offset' => array('label' => __('Offset', 'Render'), 'description' => __('Start at this many posts in from found posts.', 'Render'), 'type' => 'counter', 'default' => 0, 'properties' => array('max' => 60), 'advanced' => true), 's' => array('label' => __('Search', 'Render'), 'advanced' => true), 'meta_key' => array('label' => __('Meta Key', 'Render'), 'description' => __('The name of the meta key to use the value to search for.', 'Render'), 'advanced' => true), 'meta_value' => array('label' => __('Meta Key', 'Render'), 'description' => __('Only shows posts containing a meta key with this value.', 'Render'), 'advanced' => true, 'conditional' => array('visibility' => array('atts' => array('meta_key' => array('type' => 'NOT EMPTY'))))), 'suppress_filters' => array('label' => __('Suppress Filters', 'Render'), 'description' => __('Suppresses any filters applied to get_posts.', 'Render'), 'type' => 'checkbox', 'advanced' => true)), 'render' => true, 'wrapping' => false)) as $shortcode) { $shortcode['category'] = 'query'; $shortcode['source'] = 'Render'; render_add_shortcode($shortcode); render_add_shortcode_category(array('id' => 'query', 'label' => __('Query', 'Render'), 'icon' => 'dashicons-download')); } /** * Runs a WP_Query to provide a drop-down of posts. * * @since 0.3.0 * @access private * * @param array $atts The attributes sent to the shortcode. * * @return string The drop-down HTML. */