Как создать фильтруемый портфолио в WordPress?

Я создаю пользовательскую страницу Portfolio в WordPress, до сих пор мне удалось получить категории из пользовательской таксономии.

Теперь я хочу, когда вы нажимаете на опцию, он должен получать сообщение с настраиваемой категорией.

Это то, что у меня есть до сих пор:

<div class="row"> <div class="col-lg-12"> <div class="pull-right"> <button class="btn btn-small btn-default" data-toggle="portfilter" data-target="all">All</button> <?php $terms = get_terms("portfolio_categories"); // Consigue todas las categorias del custom taxonomy. $termsString .= $term->slug; $count = count($terms); //Cuantos categorias son? if ( $count > 0 ){ //Si es que hay mas de uno foreach ( $terms as $term ) { //Para cada termino: echo "<button class='btn btn-small btn-primary' data-toggle='portfilter' data-target='".$term->slug."'>".$term->name."</button>\n"; } } ?> </div> </div> </div> <br/> <div class="row"> <?php $portfolio_query = new WP_Query(array( 'post_type' => 'portfolios', 'order' => 'DESC', )); $terms_portfolio = get_the_terms( get_the_ID(), 'portfolio_categories'); ?> <?php if($portfolio_query->have_posts()) : while($portfolio_query->have_posts()) : $portfolio_query->the_post(); ?> <div class="col-md-4" data-tag="<?php echo $terms_portfolio[0]->slug; ?>"> <div class="thumbnail"> <?php if(has_post_thumbnail()) : ?> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('portfolio-page'); ?></a> <?php endif; ?> <div class="caption"> <a href="<?php the_permalink(); ?>"><h4><?php the_title(); ?></h4></a> </div> </div> </div> <?php endwhile; ?> <?php else : ?> <div class="alert alert-danger text-center"><p>Ningun portfolio encontrado</p></div> <?php endif; ?> </div> 

Может кто-нибудь проверить мой код? Я не могу показать категорию в data-tag od div col-md-4

Это текущий статус:

введите описание изображения здесь

Результат этого в исходном коде следующий:

 <div class="col-md-4" data-tag=""></div> 

Solutions Collecting From Web of "Как создать фильтруемый портфолио в WordPress?"

Вы слишком рано устанавливаете $terms_portfolio . Вы используете get_the_terms( get_the_ID(), 'portfolio_categories') , но get_the_ID() не будет текущим портфелем в цикле, потому что $portfolio_query->the_post() еще не запущен.

Измените этот бит:

 <?php $portfolio_query = new WP_Query(array( 'post_type' => 'portfolios', 'order' => 'DESC', )); $terms_portfolio = get_the_terms( get_the_ID(), 'portfolio_categories'); ?> <?php if($portfolio_query->have_posts()) : while($portfolio_query->have_posts()) : $portfolio_query->the_post(); ?> <div class="col-md-4" data-tag="<?php echo $terms_portfolio[0]->slug; ?>"> 

Для того, чтобы:

 <?php $portfolio_query = new WP_Query(array( 'post_type' => 'portfolios', 'order' => 'DESC', )); if($portfolio_query->have_posts()) : while($portfolio_query->have_posts()) : $portfolio_query->the_post(); $terms_portfolio = get_the_terms( get_the_ID(), 'portfolio_categories'); ?> <div class="col-md-4" data-tag="<?php echo $terms_portfolio[0]->slug; ?>">