0

Am using a custom template (tag.php) to show posts related to tag. So when someone clicks on say tag ‘A’ then he/she gets redirected to my tag.php layout instead of default template for archives. I did this by making a tag.pho in my child theme.

Now the problem is some of my posts are marked with multiple tags. for example - Tag ‘A’ – 15 posts Tag ‘B’ – 5 posts Tag ‘A’ & ‘B’ – 20 posts.

Now when someone clicks on Tag ‘A’ from sidebar tag list, then it gets the list of 15 posts which is right. But when someone clicks on Tag ‘B’ then also the user gets the list of same 15 posts.

The problem do not ends here, am also using ‘paged’ option, so when user (while seing Tag ‘A’ posts) clicks on next page, then it is shown as blank. But when user sees posts of Tag ‘B’ then also there is pagination visible (but it should not be because there are only 5 posts) and when user clicks next page, then it shows 404 error.

Here is the code -

<?php

 function uttt_custom_loop() 
 {
    global $post;
    $tags = wp_get_post_tags($post->ID);
    $first_tag = $tags[0]->term_id;
    // arguments, adjust as needed
    $args = array(
        'post_type'      => 'post',
        'tag__in' => array($first_tag),
        'post_status'    => 'publish',
        'paged'          => get_query_var( 'paged' )
    );

    global $wp_query;
    $wp_query = new WP_Query( $args );
        $cnt=1;
    if ( have_posts() ) : while ( have_posts() ) : the_post(); 
    ?>
        <div id="post_page_grid" style="<?php echo (isset($cnt) && $cnt==7)?'clear:both':'';?>"> 
            <?php $link_to_pic = post_custom('restro-pic'); ?>
                <div id="img_ra">
                    <div id="img_div_custom">
                        <?php
                        if ($link_to_pic !='') 
                        { ?>
                            <img src="<?php echo $link_to_pic; ?>" alt="restaurant-pic"/>
                            <?php 
                        } 
                        else if ($link_to_pic =='') 
                            { ?>
                            <img src="" alt=""/> <?php 
                            } ?>
                    </div>
                    <div id="rating_custom">
                        <?php echo do_shortcode('[starrater tpl=10 read_only=1]'); ?>
                    </div>
                </div>
                <div id="post_page_cont">
                    <b><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></b>
                    <?php the_excerpt(); ?>
                </div>

        </div> 
        <?php
$cnt=$cnt+1;
    endwhile;
        do_action( 'genesis_after_endwhile' );
    endif;
    wp_reset_postdata();
}
remove_action( 'genesis_loop', 'genesis_do_loop' );
add_action( 'genesis_loop', 'uttt_custom_loop' );

genesis();

1 Answer 1

0

Ok so I sorted the issue for now by using -

$queried_object = get_queried_object();
$term_id = $queried_object->term_id;

instead of -

$tags = wp_get_post_tags($post->ID);
$first_tag = $tags[0]->term_id;

Any comments?

Your Answer

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

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