bbp_update_reply_position( int $reply_id, int $reply_position = false )

Update the position of the reply.


Description Description

The reply position is stored in the menu_order column of the posts table. This is done to prevent using a meta_query to retrieve posts in the proper freshness order. By updating the menu_order accordingly, we’re able to leverage core WordPress query ordering much more effectively.


Parameters Parameters

$reply_id

(Required)

$reply_position

(Optional)

Default value: false


Top ↑

Return Return

(mixed)


Top ↑

Source Source

File: includes/replies/functions.php

function bbp_update_reply_position( $reply_id = 0, $reply_position = false ) {

	// Bail if reply_id is empty
	$reply_id = bbp_get_reply_id( $reply_id );
	if ( empty( $reply_id ) ) {
		return false;
	}

	// Prepare the reply position
	$reply_position = is_numeric( $reply_position )
		? (int) $reply_position
		: bbp_get_reply_position_raw( $reply_id, bbp_get_reply_topic_id( $reply_id ) );

	// Get the current reply position
	$current_position = get_post_field( 'menu_order', $reply_id );

	// Bail if no change
	if ( $reply_position === $current_position ) {
		return false;
	}

	// Filters not removed
	$removed = false;

	// Toggle revisions off as we are not altering content
	if ( has_filter( 'clean_post_cache', 'bbp_clean_post_cache' ) ) {
		$removed = true;
		remove_filter( 'clean_post_cache', 'bbp_clean_post_cache', 10, 2 );
	}

	// Update the replies' 'menu_order' with the reply position
	$bbp_db = bbp_db();
	$bbp_db->update( $bbp_db->posts, array( 'menu_order' => $reply_position ), array( 'ID' => $reply_id ) );
	clean_post_cache( $reply_id );

	// Toggle revisions back on
	if ( true === $removed ) {
		$removed = false;
		add_filter( 'clean_post_cache', 'bbp_clean_post_cache', 10, 2 );
	}

	return (int) $reply_position;
}

Top ↑

Changelog Changelog

Changelog
Version Description
2.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.