admin管理员组

文章数量:1404615

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?

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?

Share Improve this question asked Jan 15, 2020 at 0:20 rel_99rel_99 32 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 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

本文标签: phpList taxonomy term slugs within shortcode (doshortcode)