Support » Fixing WordPress » Conditional category post widget not appearing

  • David Borrink

    (@davidborrink)


    I’m adding a widget area to the end of posts, and I’m trying to use a category conditional tag but it’s not working. I read in the codex how to use operators for multiple conditions by using &&, but when trying it’s not working.

    I have a test post with a category of “test”. When I use a conditional state of:
    if ( is_single() )

    …the widget area shows up on all posts regardless of category. Now when I try this:

    if ( is_single() && is_category('test') )

    … the test widget disappears and doesn’t show up on my test post or any post. This makes no sense. Here is the full function with the attempt at a category conditional, for reference…

    add_action( 'genesis_after_entry', 'sb_after_entry_widget_area', 5 );
    function sb_after_entry_widget_area () {
                  // conditional for archives
       if ( is_single() && is_category('test') ) : ?>
               <div class="after-content-ad-space">
                     <?php if ( is_active_sidebar( 'printables-mailing-list' ) ) : ?>
                           <?php dynamic_sidebar( 'printables-mailing-list' ); ?>
                     <?php endif; ?>
               </div><!-- .footer-ad-area--><?php 
        endif;
    }
    

    The page I need help with: [log in to see the link]

Viewing 4 replies - 1 through 4 (of 4 total)
  • the widget area shows up on all posts regardless of category. Now when I try this:

    if ( is_single() && is_category(‘test’) )

    … the test widget disappears and doesn’t show up on my test post or any post. This makes no sense.

    This conditional is testing if we’re on a SINGLE POST page and also on the ARCHIVE page for the “test” category — and this can never evaluate to true. Perhaps that’s really what doesn’t make sense 😀

    It appears you’re trying to test if a single post belongs to a particular category. You should use in_category('test') (which returns true if the current post is in the specified category)… instead of is_category() (which returns true when the “test” category ARCHIVE page is being displayed i.e. example.com/category/test)

    I hope that helps!

    Joy

    (@joyously)

    You need to reread how those is_ functions work.
    Each one is in reference to the main query for the page, so when you say
    if ( is_single() && is_category('test') )
    that means “if the query is for any single post AND the query is for the test category”
    Well, you can probably see that you will never get a query that matches both of those at once.
    You need to change your is_category() check to something that is specific to the post. Read about https://developer.wordpress.org/reference/functions/has_category/

    Thread Starter David Borrink

    (@davidborrink)

    Thank you George and Joy, I can see that I did not know that “in” was a possible conditional, because all the examples were “is”. Because the codex didn’t show any “in” examples, that’s what was tripping me up.

    I did the “in_category(‘test’) and it works perfectly. THAT was what I needed. Thanks for taking the time to point out what didn’t make sense.

    Now the codex should be altered to show a few “in” examples.

    Thread Starter David Borrink

    (@davidborrink)

    I have one more question. My intent is to use this with three categories on the site, but one of those categories has a number of sub-categories. When I implemented this on the site, all three categories that are listed show the widget correctly, but any sub-category does not show it.

    Is there a way to ensure that all sub-categories would automatically show the widget? It would be nice to blanket all the sub-categories without having to enter all of them, not to mention that new sub-categories would automatically have access to the widget without having to recode this function each time.

    Here is my conditional line at the moment…

    if (in_category( array( 'free-learning-printables-worksheets', 'learning-and-homeschooling', 'theme-based-learning-unit-study-topics' ) ) ) : ?>

    I looked up “in_category” in the codex, but it didn’t give me any clues about this.

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Conditional category post widget not appearing’ is closed to new replies.