admin管理员组

文章数量:1334869

I'd like to show different post thumbnails in archive.php and category.php like this:

  • user logged out & post has tag "private" -> shows a "default-private" image
  • user logged in & post has tag "private" -> show the actual featured image attached to the post
  • no matter the logged in status and all other posts with no "private" tag, if no image set -> show "default" image

This is what I've come up with so far:

<?php if (!is_user_logged_in() && has_tag('private')) { ?>

    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <img src="<?php bloginfo('template_directory'); ?>/img/default-login.jpg" alt="<?php the_title(); ?>" />
    </a>

    <?php } else {                  

         // check if the post has a Post Thumbnail assigned to it.
                if ( has_post_thumbnail() ) {
                    the_post_thumbnail('news-thumb', 
                       array('class' => 'news-thumb'));
                } else { ?>
        <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> 
        <img src="<?php bloginfo('template_directory'); ?>/img/default.jpg" alt="<?php the_title(); ?>" />
                </a>
<?php } ?>

This is not working.

I'd like to show different post thumbnails in archive.php and category.php like this:

  • user logged out & post has tag "private" -> shows a "default-private" image
  • user logged in & post has tag "private" -> show the actual featured image attached to the post
  • no matter the logged in status and all other posts with no "private" tag, if no image set -> show "default" image

This is what I've come up with so far:

<?php if (!is_user_logged_in() && has_tag('private')) { ?>

    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <img src="<?php bloginfo('template_directory'); ?>/img/default-login.jpg" alt="<?php the_title(); ?>" />
    </a>

    <?php } else {                  

         // check if the post has a Post Thumbnail assigned to it.
                if ( has_post_thumbnail() ) {
                    the_post_thumbnail('news-thumb', 
                       array('class' => 'news-thumb'));
                } else { ?>
        <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> 
        <img src="<?php bloginfo('template_directory'); ?>/img/default.jpg" alt="<?php the_title(); ?>" />
                </a>
<?php } ?>

This is not working.

Share Improve this question asked Jun 4, 2020 at 12:24 PhantasmixPhantasmix 1501 silver badge15 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

Hey you have to use the below logic to handle the above conditions, it will work.

if (!is_user_logged_in() && has_tag('private')) { ?>

    <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
        <img src="<?php bloginfo('template_directory'); ?>/img/default-login.jpg" alt="<?php the_title(); ?>" />
    </a>

<?php } else if( is_user_logged_in() && has_tag('private') ) {                  
    // show the actual featured image
    // check if the post has a Post Thumbnail assigned to it.
    if ( has_post_thumbnail() ) {
        the_post_thumbnail('news-thumb', 
        array('class' => 'news-thumb'));
    }
    //if you want to show the default image if featured image is not attached you can add here in else 
}else{
    ?>
         <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
            <img src="<?php bloginfo('template_directory'); ?>/img/default.jpg" alt="<?php the_title(); ?>" />
        </a>

    <?php
}

本文标签: user rolesConditional post thumbnail based on logged status and post tag