0

I'd like to list the taxonomy terms within my shortcode.

This is how I get the list of terms (separated by commas):

<?php $terms = get_the_terms( $post->ID , array( 'shoptype' ) );
                    $i = 1;
                    foreach ( $terms as $term ) {
                        $term_link = get_term_link( $term, array( 'shoptype' ) );
                            if( is_wp_error( $term_link ) )
                            continue;
                            echo '' . $term->name . '';
                            echo ($i < count($terms))? ", " : "";
                            $i++; 
                    } ?>

But I am trying to apply this to the following code (taxonomy_terms="' . $term->slug . '"), however it just keeps repeating the shortcode for each term:

<?php $terms = get_the_terms( $post->ID , 'shoptype' ); 
            foreach ( $terms as $term ) {
                $term_link = get_term_link( $term, 'shoptype' );
                if( is_wp_error( $term_link ) )
                continue;
                echo do_shortcode( '[ajax_load_more post_type="shops" taxonomy="shoptype" taxonomy_terms="' . $term->slug . '" taxonomy_operator="IN" posts_per_page="9" button_loading_label="Loading Shops" button_label="View More" scroll="false" repeater="default" orderby="title" order="ASC"]' );
            } 
        ?>

Is there a way to list the terms (separated by commas) in the taxonomy_terms="" section?

1 Answer 1

2

The do_shortcode() function is currently in the foreach loop. I don't know what are the parameters of this shortcode , but if it accepts comma separated values of term slugs:

$terms = get_the_terms( $post->ID , 'shoptype' ); 
$i=1;
$commaSeparatedvalues="";
foreach ( $terms as $term ) {
  $term_link = get_term_link( $term, 'shoptype' );
  if( is_wp_error( $term_link ) )
    continue;
  $commaSeparatedvalues .= $term->slug;   
  $commaSeparatedvalues .= $i < count($terms) ? ", " : "";
  $i++;
 } 

 echo do_shortcode( '[ajax_load_more post_type="shops" taxonomy="shoptype" taxonomy_terms="' . $commaSeparatedvalues . '" taxonomy_operator="IN" posts_per_page="9" button_loading_label="Loading Shops" button_label="View More" scroll="false" repeater="default" orderby="title" order="ASC"]' );

So basically build the comma separated string in the foreach and keep the do_shortcode() function out of the foreach loop

1
  • That worked. Just had to remove an extra ')' in $commaSeparatedvalues .=$i < count($terms)? ", " : ""; Thanks so much!
    – rel_99
    Jan 15, 2020 at 2:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.