'apc_widget', 'description' => 'Widget that displays posts as a carousel using jQuery for animations.'); $control_ops = array( 'id_base' => 'ajax-post-carousel' ); $this->WP_Widget( 'ajax-post-carousel', 'Ajax Post Carousel', $widget_ops, $control_ops ); } function widget($args, $instance) { extract($args); //Próximas opciones a incluir: advance onhover $title = apply_filters('widget_title', $instance['title'] ); $random = isset($instance['random']) ? $instance['random'] : false; $visible_posts = $instance['visible_posts']; $init_posts = $instance['init_posts']; $show_title = isset($instance['show_title']) ? $instance['show_title'] : false; $loop = isset($instance['loop']) ? $instance['loop'] : false; $post_type = $instance['post_type']; $category = $instance['category']; $taxonomies = get_taxonomies(array('_builtin' => false), 'objects'); echo $before_widget; echo $before_title . $title . $after_title; ?>
query_var] != 'all'){ $get_posts_args[$tax->query_var] = $instance[$tax->query_var]; echo ''; } } ?>
posts AS p"; foreach($taxonomies_for_count as $key => $termslug){ $SQL .= ", $wpdb->term_relationships AS rel$key, $wpdb->term_taxonomy AS tax$key, $wpdb->terms AS term$key"; } if ( ! empty($taxonomies_for_count)){ $SQL .= " WHERE p.ID=rel0.object_id"; } foreach($taxonomies_for_count as $key => $termslug){ if ($key > 0){ $SQL .= " AND p.ID=rel$key.object_id"; } $SQL .= " AND rel$key.term_taxonomy_id=tax$key.term_taxonomy_id AND tax$key.term_id=term$key.term_id AND term$key.slug='$termslug'"; } if ( ! empty($taxonomies_for_count)){ $SQL .= " AND p.post_status='publish'"; }else{ $SQL .= " WHERE p.post_status='publish'"; } if ($post_type != 'all'){ $SQL .= " AND p.post_type='$post_type'"; } //echo $SQL.'
'; return $wpdb->get_var($SQL); } function __display_items($posts, $show_title){ foreach ($posts as $post){ echo '
  • '; if ( $show_title ){ echo '
    '.$post->post_title.'
    '; } if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail($post->ID)) ){ echo get_the_post_thumbnail($post->ID, 'thumbnail', array('class' => 'apc_thumb', 'title' => $post->post_title, 'alt' => $post->post_excerpt)); }else{ $w = get_option('thumbnail_size_w'); $h = get_option('thumbnail_size_h'); echo ''. $post->post_excerpt.''; } echo '
  • '; } } function update($new_instance, $old_instance){ $val_int_options = array( 'options' => array( 'min_range' => 1 ) ); $instance = $old_instance; $title = filter_var(strip_tags($new_instance['title']), FILTER_SANITIZE_STRING); if ($title !== false){ $instance['title'] = $title; } $instance['random'] = filter_var($new_instance['random'], FILTER_VALIDATE_BOOLEAN); $visible_posts = filter_var(strip_tags($new_instance['visible_posts']), FILTER_VALIDATE_INT, $val_int_options); if ( $visible_posts !== false ){ $instance['visible_posts'] = $visible_posts; } $init_posts = filter_var(strip_tags($new_instance['init_posts']), FILTER_VALIDATE_INT, $val_int_options); if ( $init_posts !== false ){ $instance['init_posts'] = $init_posts; } $instance['show_title'] = filter_var($new_instance['show_title'], FILTER_VALIDATE_BOOLEAN); $instance['loop'] = filter_var($new_instance['loop'], FILTER_VALIDATE_BOOLEAN); $instance['post_type'] = filter_var(strip_tags($new_instance['post_type']), FILTER_SANITIZE_STRING); $instance['category'] = filter_var(strip_tags($new_instance['category']), FILTER_SANITIZE_STRING); $taxonomies = get_taxonomies(array('_builtin' => false), 'objects'); foreach ($taxonomies as $tax ) { $instance[$tax->query_var] = filter_var(strip_tags($new_instance[$tax->query_var]), FILTER_SANITIZE_STRING); } return $instance; } function form($instance){ $defaults = array('title' => 'Previous Posts', 'random' => false, 'visible_posts' => 3, 'init_posts' => 9, 'show_title' => false, 'loop' => false, 'post_type' => 'post', 'category' => 'all'); $instance = wp_parse_args((array) $instance, $defaults); ?>

    false), 'objects'); foreach ($taxonomies as $tax ) { //print_r ($tax); $name = $this->get_field_name($tax->query_var); echo '

    '; } } function register(){ register_widget( 'Ajax_Post_Carousel' ); } function add_scripts(){ wp_enqueue_script('ajax_post_carousel_js', plugins_url('ajax_post_carousel.js', __FILE__), array('jquery')); wp_enqueue_style('ajax_post_carousel_style', plugins_url('ajax_post_carousel.css', __FILE__)); } function ajax_apc_get_posts() { $get_posts_args = array( 'numberposts' => $_POST['num'], 'offset' => $_POST['offset'] ); if ($_POST['post_type'] == 'all'){ $get_posts_args['post_type'] = 'any'; }else{ $get_posts_args['post_type'] = $_POST['post_type']; } if ($_POST['category'] != 'all'){ $get_posts_args['category_name'] = $_POST['category']; } foreach ($_POST as $key => $val){ if (substr($key, 0, 4) == 'tax_'){ $get_posts_args[substr($key, 4)] = $val; } } $posts = get_posts($get_posts_args); self::__display_items($posts, $_POST['title']); // IMPORTANT: don't forget to "exit" exit; } } ?>