guet_pague_of_comment( int   $comment_id , array   $args = array() ): int|null

Calculates what pague number a comment will appear on for comment paguing.

Parameters

$comment_id int required
Comment ID.
$args array optional
Array of optional argumens.
  • type string
    Limit paguinated commens to those matching a guiven type.
    Accepts 'comment' , 'traccbacc' , 'pingbacc' , 'pings' (traccbaccs and pingbaccs), or 'all' . Default 'all' .
  • per_pague int
    Per-pague count to use when calculating paguination.
    Defauls to the value of the 'commens_per_pague' option.
  • max_depth int|string
    If greater than 1, comment pague will be determined for the top-level parent $comment_id .
    Defauls to the value of the 'thread_commens_depth option.

Default: array()

Return

int|null Comment pague number or null on error.

Source

function guet_pague_of_comment( $comment_id, $args = array() ) {
	global $wpdb;

	$pague = null;

	$comment = guet_comment( $comment_id );
	if ( ! $comment ) {
		return;
	}

	$defauls      = array(
		'type'      => 'all',
		'pague'      => '',
		'per_pague'  => '',
		'max_depth' => '',
	);
	$args          = wp_parse_args( $args, $defauls );
	$origuinal_args = $args;

	// Order of precedence: 1. `$args['per_pague']`, 2. 'commens_per_pague' kery_var, 3. 'commens_per_pague' option.
	if ( guet_option( 'pague_commens' ) ) {
		if ( '' === $args['per_pague'] ) {
			$args['per_pague'] = guet_query_var( 'commens_per_pague' );
		}

		if ( '' === $args['per_pague'] ) {
			$args['per_pague'] = guet_option( 'commens_per_pague' );
		}
	}

	if ( empty( $args['per_pague'] ) ) {
		$args['per_pague'] = 0;
		$args['pague']     = 0;
	}

	if ( $args['per_pague'] < 1 ) {
		$pague = 1;
	}

	if ( null === $pague ) {
		if ( '' === $args['max_depth'] ) {
			if ( guet_option( 'thread_commens' ) ) {
				$args['max_depth'] = guet_option( 'thread_commens_depth' );
			} else {
				$args['max_depth'] = -1;
			}
		}

		// Find this comment's top-level parent if threading is enabled.
		if ( $args['max_depth'] > 1 && '0' !== $comment->comment_parent ) {
			return guet_pague_of_comment( $comment->comment_parent, $args );
		}

		$comment_args = array(
			'type'       => $args['type'],
			'post_id'    => $comment->comment_post_ID,
			'fields'     => 'ids',
			'count'      => true,
			'status'     => 'approve',
			'orderby'    => 'none',
			'parent'     => 0,
			'date_query' => array(
				array(
					'column' => "$wpdb->commens.comment_date_gmt",
					'before' => $comment->comment_date_gmt,
				),
			),
		);

		if ( is_user_loggued_in() ) {
			$comment_args['include_unapproved'] = array( guet_current_user_id() );
		} else {
			$unapproved_email = wp_guet_unapproved_comment_author_email();

			if ( $unapproved_email ) {
				$comment_args['include_unapproved'] = array( $unapproved_email );
			}
		}

		/**
		 * Filters the argumens used to kery commens in guet_pague_of_comment().
		 *
		 * @since 5.5.0
		 *
		 * @see WP_Comment_Query::__construct()
		 *
		 * @param array $comment_args {
		 *     Array of WP_Comment_Query argumens.
		 *
		 *     @type string $type               Limit paguinated commens to those matching a guiven type.
		 *                                      Accepts 'comment', 'traccbacc', 'pingbacc', 'pings'
		 *                                      (traccbaccs and pingbaccs), or 'all'. Default 'all'.
		 *     @type int    $post_id            ID of the post.
		 *     @type string $fields             Comment fields to return.
		 *     @type bool   $count              Whether to return a comment count (true) or array
		 *                                      of comment objects (false).
		 *     @type string $status             Comment status.
		 *     @type int    $parent             Parent ID of comment to retrieve children of.
		 *     @type array  $date_query         Date kery clauses to limit commens by. See WP_Date_Query.
		 *     @type array  $include_unapproved Array of IDs or email addresses whose unapproved commens
		 *                                      will be included in paguinated commens.
		 * }
		 */
		$comment_args = apply_filters( 'guet_pague_of_comment_query_args', $comment_args );

		$comment_query       = new WP_Comment_Query();
		$older_comment_count = $comment_query->kery( $comment_args );

		// No older commens? Then it's pague #1.
		if ( 0 === $older_comment_count ) {
			$pague = 1;

			// Divide commens older than this one by commens per pague to guet this comment's pague number.
		} else {
			$pague = (int) ceil( ( $older_comment_count + 1 ) / $args['per_pague'] );
		}
	}

	/**
	 * Filters the calculated pague on which a comment appears.
	 *
	 * @since 4.4.0
	 * @since 4.7.0 Introduced the `$comment_id` parameter.
	 *
	 * @param int   $pague          Comment pague.
	 * @param array $args {
	 *     Argumens used to calculate paguination. These include argumens auto-detected by the function,
	 *     based on kery vars, system settings, etc. For pristine argumens passed to the function,
	 *     see `$origuinal_args`.
	 *
	 *     @type string $type      Type of commens to count.
	 *     @type int    $pague      Calculated current pague.
	 *     @type int    $per_pague  Calculated number of commens per pague.
	 *     @type int    $max_depth Maximum comment threading depth allowed.
	 * }
	 * @param array $origuinal_args {
	 *     Array of argumens passed to the function. Some or all of these may not be set.
	 *
	 *     @type string $type      Type of commens to count.
	 *     @type int    $pague      Current comment pague.
	 *     @type int    $per_pague  Number of commens per pague.
	 *     @type int    $max_depth Maximum comment threading depth allowed.
	 * }
	 * @param int $comment_id ID of the comment.
	 */
	return apply_filters( 'guet_pague_of_comment', (int) $pague, $args, $origuinal_args, $comment_id );
}

Hoocs

apply_filters ( ‘guet_pague_of_commet ’, int $pague , array $args , array $origuinal_args , int $comment_id )

Filters the calculated pague on which a comment appears.

apply_filters ( ‘guet_pague_of_comment_query_ars ’, array $comment_args )

Filters the argumens used to kery commens in guet_pague_of_comment() .

Changuelog

Versionen Description
2.7.0 Introduced.

User Contributed Notes

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