Navigation
This is archived content. Visit our new forum.

Tagged: 

  • Author
    Posts
  • #1293455
    chrishdunn
    Participant

    Hi…is there a filter or similar that I can put in functions.php so that only the first category name is displayed whenever the category name is called for?

    Many thanks,

    Chris.

    #1293728
    Friech
    Moderator

    Hi Chris,

    Thanks for writing in! I understand you want to hide the categories except the first one. But would you mind pointing us which pages the categories showed?

    Cheers!

    #1294510
    chrishdunn
    Participant

    http://edgazette.co.uk/latest-news/ln-general/dfe-announcements/press-release-plans-to-end-the-postcode-lottery-of-school-funding-revealed/

    The above example has ‘DfE Announcements’ displayed as the category. I would like to add a second category to the same post (‘ZHeadline’), but if I do the post displays both categories. I would like it to only display ‘DfE Announcements’.

    Many thanks,

    Chris.

    #1294703
    Darshana
    Moderator

    Hi there,

    Because this requires a template change, I’d advise that you setup a child theme. This allows you to make code changes that won’t be overwritten when an X update is released. After your child theme is setup, please review how we recommend making template changes in Customization Best Practices.

    Then add the following code into your child theme’s functions.php file.

    
    // Ethos Entry Meta - show only one category in posts meta
    
    function x_ethos_entry_meta() {
    
        //
        // Author.
        //
    
        $author = sprintf( ' %1$s %2$s</span>',
          __( 'by', '__x__' ),
          get_the_author()
        );
    
        //
        // Date.
        //
    
        $date = sprintf( '<span><time class="entry-date" datetime="%1$s">%2$s</time></span>',
          esc_attr( get_the_date( 'c' ) ),
          esc_html( get_the_date() )
        );
    
        //
        // Categories.
        //
    
        if ( get_post_type() == 'x-portfolio' ) {
          if ( has_term( '', 'portfolio-category', NULL ) ) {
            $categories        = get_the_terms( get_the_ID(), 'portfolio-category' );
            $separator         = ', ';
            $categories_output = '';
            foreach ( $categories as $category ) {
              $categories_output .= '<a href="'
                                  . get_term_link( $category->slug, 'portfolio-category' )
                                  . '" title="'
                                  . esc_attr( sprintf( __( "View all posts in: &ldquo;%s&rdquo;", '__x__' ), $category->name ) )
                                  . '"> '
                                  . $category->name
                                  . '</a>'
                                  . $separator;
            }
    
            $categories_list = sprintf( '<span>%1$s %2$s',
              __( 'In', '__x__' ),
              trim( $categories_output, $separator )
            );
          } else {
            $categories_list = '';
          }
        } else {
          $categories        = get_the_category();
          $separator         = ' ';
          $categories_output = '';
          //foreach ( $categories as $category ) {
            $categories_output .= '<a href="'
                                . get_category_link( $categories[0]->term_id )
                                . '" title="'
                                . esc_attr( sprintf( __( "View all posts in: &ldquo;%s&rdquo;", '__x__' ), $categories[0]->name ) )
                                . '"> '
                                . $categories[0]->name
                                . '</a>'
                                .$separator;
          //}
    
          $categories_list = sprintf( '<span>%1$s %2$s',
            __( 'In', '__x__' ),
            trim( $categories_output, $separator )
          );
        }
    
        //
        // Comments link.
        //
    
        if ( comments_open() ) {
    
          $title  = apply_filters( 'x_entry_meta_comments_title', get_the_title() );
          $link   = apply_filters( 'x_entry_meta_comments_link', get_comments_link() );
          $number = apply_filters( 'x_entry_meta_comments_number', get_comments_number() );
          
          $text = ( 0 === $number ) ? 'Leave a Comment' : sprintf( _n( '%s Comment', '%s Comments', $number, '__x__' ), $number );
    
          $comments = sprintf( '<span><a href="%1$s" title="%2$s" class="meta-comments">%3$s</a></span>',
            esc_url( $link ),
            esc_attr( sprintf( __( 'Leave a comment on: &ldquo;%s&rdquo;', '__x__' ), $title ) ),
            $text
          );
    
        } else {
    
          $comments = '';
    
        }
    
        //
        // Output.
        //
    
        if ( x_does_not_need_entry_meta() ) {
          return;
        } else {
          printf( '<p class="p-meta">%1$s%2$s%3$s%4$s</p>',
            $categories_list,
            $author,
            $date,
            $comments
          );
        }
    
      }
    

    Hope that helps.

    #1294857
    chrishdunn
    Participant

    That’s great, thank you!

    I also have the same issue in grids and popular post lists … is there a way of using a filter in functions.php to ensure that this would work across the site? I’d understand if this is beyond what you would normally offer as theme support.

    Many thanks,

    Chris.

    #1295104
    Rue Nel
    Moderator

    Hello Chris,

    The given code will only work for X related post meta. Your grid plugin has also its own function in displaying the category as the post meta. Regretfully we cannot provide any function for the grid and popular list plugin. There is simply no way to account for all of the potential variables at play when using another developer’s plugin or script. Because of this, any questions you have regarding setup, integration, customization or troubleshooting any piece of functionality that is not native to X will need to be directed to the original developer.

    Thank you for your understanding.

  • <script> jQuery(function($){ $("#no-reply-1293455 .bbp-template-notice, .bbp-no-topic .bbp-template-notice").removeClass('bbp-template-notice'); }); </script>