• Resolved warcher88

    (@warcher88)


    I have a custom post type called advertisements with some taxonomies e.g. brands, condition, size etc

    I used the below code in my single.php file to display the taxonomies on the single posts, however the archive doesn’t seem to work.

    <?php the_terms( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>

    I use Enfold theme which uses postslider.php to display posts in a grid layout. However when i use the same code to display the taxonomies it doesnt work. Its just blank. I have tried dozens of different things i found online but none of it worked, and i don’t understand why the code will work in one php file but not the other.

Viewing 11 replies - 1 through 11 (of 11 total)
  • Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    It’s really going to be dependent on what templates are being used when and where. May be a case of you’re not quite yet editing the correct one.

    At least based on the information you’ve provided above, you’ve already tackled thee single.php file

    Then you mention archives, which is probably archive.php, and then also Enfold theme which has a template file named postslider.php which may or may not be getting used on the archives. Really hard for me to say at the moment. It’s also possible that the spot that you want to have the actual output of these terms may actually be a spot in a template file not yet identified, just a heads up.

    Thread Starter warcher88

    (@warcher88)

    Thanks for the quick response Michael,

    I know that the postslider.php file is the correct one since it displays the html that i add. I have pasted some code below, its not the whole file since its huge and its hard to tell where the functions begin and end, but you can see where i added the above code and also added “<p>brand goes here</p>” which works.

    $markup = avia_markup_helper( array( ‘context’ =>
    ‘entry_content’, ‘echo’ => false, ‘id’ => $the_id, ‘custom_markup’ => $custom_markup
    ) );
    $excerpt = apply_filters(
    ‘avf_post_slider_entry_excerpt’, $excerpt, $prepare_excerpt, $permalink, $entry );
    $output .= ! empty( $excerpt ) ? “<div class=’slide-
    entry-excerpt entry-content’ {$markup}>

    <p>brand goes here
    <?php the_terms( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>
    </p>

    {$excerpt}</div>” : ”;

    $output .= ‘</div>’;
    $output .= ‘<footer class=”entry-footer”>’;
    if( ! empty( $meta ) )
    {
    $output .= $meta;
    }
    $output .= ‘</footer>’;

    $output .= av_blog_entry_markup_helper( $the_id );

    $output .= ‘</article>’;

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    aha.

    $output .= ! empty( $excerpt ) ? "<div class='slide-entry-excerpt entry-content' {$markup}><p>brand goes here <?php the_terms( $post->ID, 'brands', 'Brand: ', ', ', ' ' ); ?></p>{$excerpt}</div>" : '';
    

    So this is the pertinent line above, and what’s going on is that content is supposed to be getting assigned to a variable, specifically $output.

    However, the_terms(...) is a function that echo’s the result, which is different from returning the result which is what we need. Chances are the output for the term list is on the page *somewhere* but not where you’re expecting it.

    So, I would instead change your usage of the_terms(...) to get_the_term_list(...) with the exact same arguments. Simply change the function used, and I have a hunch you’ll get the results you’re wanting. That said, if by chance, not yet still, then I’d consider changing the $post->ID portion to perhaps $the_id based on other parts of your code above, OR at minimum, get_the_ID(). That version would be get_the_term_list( get_the_ID(), ...)

    Give those a shot, most specifically the function change.

    Thread Starter warcher88

    (@warcher88)

    Hey Michael, it didn’t work unfortunately. I tried all of the below.

    <?php get_the_terms( $post->ID, ‘advertisements’ ); ?>
    <?php get_the_terms( $post->ID, ‘brands’ ); ?>
    <?php get_the_term_list( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>
    <?php get_the_term_list( get_the_ID(), ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>

    <?php the_terms( get_the_ID(), ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>
    <?php the_terms( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>`

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    These variations are going to be the only ones you want to be tinkering with:

    get_the_term_list( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ );
    
    get_the_term_list( get_the_ID(), ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ );
    
    get_the_term_list( $the_id, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ );
    

    And it’s going to go in place of what you have here:

    <p>brand goes here
    <?php the_terms( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?>
    </p>
    

    Give that last one a try, as I’m now curious what the templates are doing in regards to the post ID globals, and that $the_id may be the post ID being rendered.

    Thread Starter warcher88

    (@warcher88)

    It didn’t work, but i think i might have found part of the problem. The code i used is:

    $output .= ! empty( $excerpt ) ? “<div class=’slide-entry-excerpt entry-content’ {$markup}>
    <p><?php the_terms( $post->ID, ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?></p>
    {$excerpt}</div>” : ”;

    but when i inspect element on the website it shows like HTML with a comment:

    <p>
    <!–?php the_terms( , ‘brands’, ‘Brand: ‘, ‘, ‘, ‘ ‘ ); ?–>
    </p>

    So it seems like its not reading it as PHP?

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    A little odd, given that the very first thing inside the function the_terms() is my recommended replacement code above, but without the echo’ing

    https://developer.www.ads-software.com/reference/functions/the_terms/#source

    Beyond that, I’m not sure what to suggest at this point for why it’s failing, and it’s not an issue with CPTUI itself at the moment. What I’ve suggested *should* be working, but the biggest variable I am seeing is getting the correct ID in place and checking on what it’s returning.

    hmm ok i will have to contact the Enfold theme support and see if they know what is happening, thanks

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    Sounds good, and feel free to followup here, as I’m a bit curious at this point.

    Thread Starter warcher88

    (@warcher88)

    Hello, for anyone else interested. I ended up fixing it with this:

    if ( $terms && ! is_wp_error( $terms ) ) {

    $brands = array();

    foreach ( $terms as $term ) {
    $brands[] = $term->name;
    }

    $brands_list = join( “, “, $brands );

    $output .= ‘
    <div class=”slide-entry-terms” class=”av-post-brands”>’;
    $output .= sprintf(‘Brands: <span>%s</span>’, esc_html( $brands_list ));
    $output .= ‘</div>
    ‘;
    }

    Plugin Contributor Michael Beckwith

    (@tw2113)

    The BenchPresser

    Sounds good, glad to see you got a solution of some sort in place. ??

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘taxonomies wont display on some pages’ is closed to new replies.