Ashley Cameron Design

Ashley Cameron Design

Shop the Creative Design Market

Good morning

WordPress Portfolio Custom Post Type Filtering

SnippetsWordPress

About a 1 minute read

"Design is a formal response to a strategic question."

Mariona Lopez, business owner


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
    // get portfolio
    $args = array( 'post_type' => 'portfolio', 'posts_per_page' => 100, 'orderby' => 'title', 'order' => 'asc' );
    $loop = new WP_Query( $args );    
    $port = array();
    while ( $loop->have_posts() ) : $loop->the_post();     
            $idx = get_the_ID();
            $year_completed = get_post_meta($idx, 'year_completed', true);
            $website_addr = get_post_meta($idx, 'website_address', true);
            $thumb = get_the_post_thumbnail($idx, 'thumbnail'); //250x200 - featured image
            $title = get_the_title();
            $excerpt = get_the_excerpt();
            $content = get_the_content();
           
            //get 'Solutions' terms
            $terms = get_the_terms($idx, 'Solutions');
            $terms_string = '';

            //build up comma delimited string
            foreach($terms as $t){
                $terms_string .= $t->slug . ' ';
            }
            $port[] = array(
                'id' => $idx,
                'year_completed' => $year_completed,
                'website' => $website_addr,
                'thumb' => $thumb,
                'title' => $title,
                'content' => $content,
                'excerpt' => $excerpt,
                'terms' => $terms,
                'terms_string' =>$terms_string, //classifications (comma delimited slugs)
                'permalink' => get_permalink(),
            );
    endwhile;

    $terms = get_terms('Solutions');   
   
    $filters = '<section id="options" class="clearfix">
                <ul id="filters" class="option-set floated clearfix">
                <li><a href="#filter" data-filter="*" class="selected">show all</a></li>'
;                         

                foreach($terms as $t){         
                  $filters .= '<li><a href="#filter" data-filter=".' . $t->slug . '">' . $t->name . '</a></li>';// $t->count
                }
                $filters .= '</ul></section>';
?>  


<!-- add this inside entry-content -->
    <?php echo $filters; ?>                
    <div id="portfolio">
       
        <!-- isotope -->
        <ul class="thumbnails isotope">
        <?php foreach($port as $p){ ?>
            <li class="span3 element <?php echo $p['terms_string']; ?>">
                <div class="thumbnail">
                    <?php echo $p['thumb']; ?>
                    <div class="caption">
                      <h5><a href="<?php echo $p['permalink']; ?>"><?php echo $p['title']; ?></a></h5>
                    </div><!-- end caption -->
                </div><!-- end thumbnail -->
            </li>
        <?  } //end foreach ?>
        </ul>
       
    </div><!-- end #portfolio -->