Wordpress conditional statements for taxonomy, ter

2019-04-17 02:48发布

This is such a basic problem I'm having but I've tried so many different functions and can't get any to work.

On my wordpress website I have created a taxonomy called 'file-formats'

and in this taxonomy I have created these terms (I think these are terms?)... PDF, MOV, PPT and DOC

See screenshot below...

enter image description here


The problem I have which I can't seem to figure out, is I have a simple WP_Query loop, see below...


<?php   
    $downloads  = new WP_Query(array(
        'post_type'         => 'downloads',
        'order'             => 'ASC',
        'posts_per_page'    => -1
)); ?>

<?php if ($downloads->have_posts()) : ?>

    <?php while ($downloads->have_posts()) : $downloads->the_post(); ?>

        <!-- This is where my conditional statement will go, see below -->

    <?php endwhile; ?>

<?php unset($downloads); endif; wp_reset_query(); ?>


...and inside this loop, I want to conditionally display an icon, depending on what term has been assigned to that post.

For example if a post has been assigned 'PDF' term, then I want my PDF icon image to be displayed, etc.

See below my conditional statement PHP, which sits within the loop above. But I can't figure out why the last condition is always being echoed. Help!


<?php
    if (term_exists(array(
        'term_id'           => 4,
        'term_taxonomy'     => 'file-formats'
    ))) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/pdf.png" alt="" class="file-format-icon">' ;
    }
    else if (term_exists(array(
        'term_id'           => 6,
        'term_taxonomy'     => 'file-formats'
    ))) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/ppt.png" alt="" class="file-format-icon">'    
    }
    else if (term_exists(array(
        'term_id'           => 5,
        'term_taxonomy'     => 'file-formats'
    ))) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/mov.png" alt="" class="file-format-icon">' ;  
    }
    else {
        echo 'nothing' ;
    }
?>


and I've also tried this...


<?php
    if (is_tax('file-formats','pdf')) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/pdf.png" alt="" class="file-format-icon">' ;  
    }
    else if (is_tax('file-formats','ppt')) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/ppt.png" alt="" class="file-format-icon">' ;  
    }
    else if (is_tax('file-formats','mov')) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/mov.png" alt="" class="file-format-icon">' ;  
    }
    else {
        echo 'nothing' ;
    }   
?>


and this...


<?php
    if (is_object_in_taxonomy( 'pdf', 'file-formats' )) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/pdf.png" alt="" class="file-format-icon">' ;
    }
    else if (is_object_in_taxonomy( 'ppt', 'file-formats' )) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/ppt.png" alt="" class="file-format-icon">' ;  
    }
    else if (is_object_in_taxonomy( 'mov', 'file-formats' )) {
        echo '<img src="' . content_url( '/themes/mytheme/' ) . 'images/icons/mov.png" alt="" class="file-format-icon">' ;
    }
    else {
        echo 'nothing' ;
    }
?>


Any help would be amazing because this seems to be so hard when it's a faily basic thing.

Thanks in advance.



1条回答
该账号已被封号
2楼-- · 2019-04-17 03:15

I think term_exists() is throwing you off; that checks if a given taxonomy contains x term, generally. If you want the terms associated with a given post, use get_the_terms(), which returns an array. Your code can then check against that array to decide which image to insert.

查看更多
登录 后发表回答