Skip to:
Content
Pages
Categories
Search
Top
Bottom

bbp_reply_admin_links


  • theredeclipse
    Participant

    @theredeclipse

    Hi, I want to adapt forum styles for my theme. For example function bbp_reply_admin_links calls a bunch of links with different classes, like bbp-topic-edit-link bb-topic-close link and go on.

    Guess only proper way to it via functions.php, but i’m quite new to php. Can someone show an example?

Viewing 9 replies - 1 through 9 (of 9 total)

  • Robin W
    Moderator

    @robin-w

    not quite sure what you are asking.

    If you just want to style, then you would use css rather than php. If you want to change what they do, then you would use php

    Can you come back and explain with a specific example what you want to do.

    eg I want x to look like this, or do that


    theredeclipse
    Participant

    @theredeclipse

    Default output looks like

    <span class="bbp-admin-links">
    // inside different classes of links
    </span>

    I would like change it to
    <a class="button"></a>
    So I want to delete span from output and use one style for each <a> link, if its possible.

    And the thing is – I could do it by modifying forum files, but after update it will be overwritten. So I want to use bbpress functions php file to change output, but I don’t know how. I hope I’ve explained it well 😛


    Robin W
    Moderator

    @robin-w

    hmmm … if you want each link to be a button, I can point you to some code, but you’ll need to figure it out.

    so

    so for replies, the function is in

    bbpress/includes/replies/template.php

    which I think you found.

    function bbp_get_reply_admin_links( $args = array() ) {
    
    		// Parse arguments against default values
    		$r = bbp_parse_args( $args, array(
    			'id'     => 0,
    			'before' => '<span class="bbp-admin-links">',
    			'after'  => '</span>',
    			'sep'    => ' | ',
    			'links'  => array()
    		), 'get_reply_admin_links' );
    
    		$r['id'] = bbp_get_reply_id( (int) $r['id'] );
    
    		// If post is a topic, return the topic admin links instead
    		if ( bbp_is_topic( $r['id'] ) ) {
    			return bbp_get_topic_admin_links( $args );
    		}
    
    		// If post is not a reply, return
    		if ( !bbp_is_reply( $r['id'] ) ) {
    			return;
    		}
    
    		// If topic is trashed, do not show admin links
    		if ( bbp_is_topic_trash( bbp_get_reply_topic_id( $r['id'] ) ) ) {
    			return;
    		}
    
    		// If no links were passed, default to the standard
    		if ( empty( $r['links'] ) ) {
    			$r['links'] = apply_filters( 'bbp_reply_admin_links', array(
    				'edit'  => bbp_get_reply_edit_link ( $r ),
    				'move'  => bbp_get_reply_move_link ( $r ),
    				'split' => bbp_get_topic_split_link( $r ),
    				'trash' => bbp_get_reply_trash_link( $r ),
    				'spam'  => bbp_get_reply_spam_link ( $r ),
    				'reply' => bbp_get_reply_to_link   ( $r )
    			), $r['id'] );
    		}
    
    		// See if links need to be unset
    		$reply_status = bbp_get_reply_status( $r['id'] );
    		if ( in_array( $reply_status, array( bbp_get_spam_status_id(), bbp_get_trash_status_id() ) ) ) {
    
    			// Spam link shouldn't be visible on trashed topics
    			if ( bbp_get_trash_status_id() === $reply_status ) {
    				unset( $r['links']['spam'] );
    
    			// Trash link shouldn't be visible on spam topics
    			} elseif ( bbp_get_spam_status_id() === $reply_status ) {
    				unset( $r['links']['trash'] );
    			}
    		}
    
    		// Process the admin links
    		$links  = implode( $r['sep'], array_filter( $r['links'] ) );
    		$retval = $r['before'] . $links . $r['after'];
    
    		return apply_filters( 'bbp_get_reply_admin_links', $retval, $r, $args );
    	}

    which you can filter at the end, but how would depend on your skills.

    the span part can be simply changed by putting a filter into your child theme’s function file

    eg

    add_filter ('bbp_before_get_reply_admin_links_parse_args', 'theredeclipse_change' ) ;
    
    function theredeclipse_change ($args) {
    	$args['before'] = '<span class="bbp-admin-links">' ;
    	$args['after']   = '</span>' ;
    return $args ;
    }

    and just change whatever you want the span part to look like, or just remove it.

    if you want to style each link, then you’ll see that there is a call to each separate function

    'edit'  => bbp_get_reply_edit_link ( $r ),
    				'move'  => bbp_get_reply_move_link ( $r ),
    				'split' => bbp_get_topic_split_link( $r ),
    				'trash' => bbp_get_reply_trash_link( $r ),
    				'spam'  => bbp_get_reply_spam_link ( $r ),
    				'reply' => bbp_get_reply_to_link   ( $r )
    

    so to do it in functions, you’d need to go to each one.

    you’ll find these in the same file above

    since the class is hard coded, you could add a final filter with a preg_replace

    eg

    add_filter( 'bbp_get_reply_move_link' , 'theredeclipse_move', 10 , 2 ) ;
    
    function theredeclipse_move ($retval, $r) {
    $retval =  preg_replace(whatever args you need, with, $retval);
    return $retval ;
    }

    so $retval will hold the line of code including the class.

    so google preg-replace and see if you can get it working !!


    theredeclipse
    Participant

    @theredeclipse

    I’ve tried at least to change <span> like in your example, but it doesn’t work. Aswell tried to pull this out in this way:

    add_filter ('bbp_reply_admin_links', 'theredeclipse_change' ) ;
    
    function theredeclipse_change ($retval, $r) {
    $r = bbp_parse_args( $args, array(
    			'before' => '<span class="bbp-admin-links">',
    			'after'  => '</span>',
    		), 'get_reply_admin_links' );
    return $retval ;
    }

    And several attempts more, but nothing happens :[


    Robin W
    Moderator

    @robin-w

    sorry, this was not meant to be a solution, but rather to point you to then code

    'before' => '<span class="bbp-admin-links">',
    			'after'  => '</span>',

    is what it currently does, so if you wanted to take out the span entirely you would do

    function theredeclipse_change ($args) {
    	$args['before'] = '' ;
    	$args['after']   = '' ;
    return $args ;
    }

    Robin W
    Moderator

    @robin-w


    theredeclipse
    Participant

    @theredeclipse

    Thanks for the link, it explains. But can you tell me at least approximate way to call separately avatar and username by this function bbp_reply_author_link? It will help alot


    theredeclipse
    Participant

    @theredeclipse

    Nvm, got solution:

    <?php bbp_reply_author_link( array( 'sep' => '', 'show_role' => false, 'type' => 'name' ) ); ?>

    and

    <?php bbp_reply_author_link( array( 'sep' => '', 'show_role' => true, 'type' => 'avatar' ) ); ?>


    Robin W
    Moderator

    @robin-w

    great – glad you’re fixed

Viewing 9 replies - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.
Skip to toolbar