Site icon Hip-Hop Website Design and Development

Filter Custom Post Type Posts by Taxonomy

I created a custom post type named “listas” and a custom taxonomy named “taxolistas”.

I would like to fix this function from the plugin Thumbs Rating to make it filter posts by custom taxonomies from Custom Post Types.

Thanks in advance.

if (!function_exists('thumbs_rating_top_func')):
    function thumbs_rating_top_func($atts)
        {
        $return = '';

        // Parameters accepted

        extract(shortcode_atts(array(
            'exclude_posts' => '',
            'type' => 'positive',
            'posts_per_page' => 5,
            'category' => '',
            'show_votes' => 'yes',
            'post_type' => 'any',
            'show_both' => 'no',
            'order' => 'DESC',
            'orderby' => 'meta_value_num'
        ) , $atts));

        // Check wich meta_key the user wants

        if ($type == 'positive')
            {
            $meta_key = '_thumbs_rating_up';
            $other_meta_key = '_thumbs_rating_down';
            $sign = "+";
            $other_sign = "-";
            }
          else
            {
            $meta_key = '_thumbs_rating_down';
            $other_meta_key = '_thumbs_rating_up';
            $sign = "-";
            $other_sign = "+";
            }

        // Build up the args array

        $args = array(
            'post__not_in' => explode(",", $exclude_posts) ,
            'post_type' => $post_type,
            'post_status' => 'publish',
            'cat' => $category,
            'pagination' => false,
            'posts_per_page' => $posts_per_page,
            'cache_results' => true,
            'meta_key' => $meta_key,
            'order' => $order,
            'orderby' => $orderby,
            'ignore_sticky_posts' => true
        );

        // Get the posts

        $thumbs_ratings_top_query = new WP_Query($args);

        // Build the post list

        if ($thumbs_ratings_top_query->have_posts()):
            $return.= '';
            while ($thumbs_ratings_top_query->have_posts())
                {
                $thumbs_ratings_top_query->the_post();
                $return.= '<h2 class="lista-item-h2 lista-item-h2-grade flex">

  <div class="listapop">
   <strong class="lista-ranking "><span class="figlista"></span></strong> </div>    

   <figure class="lista-item-foto">';
                $return.= '<div class="videoPlayer">
    ' . get_the_post_thumbnail($post_id, array(
                    'class' => ' videoPlayer__image lista-item-imagem'
                )) . '
         </div>
   </figure>


   ';
                $return.= ' 
   <div class="votar-lista">

' . thumbs_rating_getlink() . '

   </div>

';
                $return.= '

 <a class="titulo-da-lista modal-link" href="' . get_permalink() . '"> <div class="listItem__data"> <div class="trimtitulo"> ' . wp_trim_words(get_the_title() , 11, null) . ' </div> <span class="listItem__props">
<span class="lista-item-blerg grey default"></span>';
                $return.= '<span class="wikipedia-lista block grey">   ' . mts_excerpt(32) . '  </span></span></div></a>
</h2>';
                if ($show_votes == "yes")
                    {

                    // Get the votes

                    $meta_values = get_post_meta(get_the_ID() , $meta_key);

                    // Add the votes to the HTML

                    $return.= ' (' . $sign;
                    if (sizeof($meta_values) > 0)
                        {
                        $return.= $meta_values[0];
                        }
                      else
                        {
                        $return.= "0";
                        }

                    // Show the other votes if needed

                    if ($show_both == 'yes')
                        {
                        $other_meta_values = get_post_meta(get_the_ID() , $other_meta_key);
                        $return.= " " . $other_sign;
                        if (sizeof($other_meta_values) > 0)
                            {
                            $return.= $other_meta_values[0];
                            }
                          else
                            {
                            $return.= "0";
                            }
                        }

                    $return.= ')';
                    }
                }

            // Reset the post data or the sky will fall

            wp_reset_postdata();
        endif;
        return $return;
        }

    add_shortcode('thumbs_rating_top', 'thumbs_rating_top_func');
endif;