Make WordPress Core

Changeset 59012


Ignore:
Timestamp:
09/11/2024 03:38:20 PM (4 weeks ago)
Author:
flixos90
Message:

Comments: Ensure $comment_id parameter on get_edit_comment_link filter is always a comment ID.

Follow up to [58875].

Props david.binda, peterwilsoncc, mukesh27, davidbaumwald.
Fixes #61727.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/link-template.php

    r58875 r59012  
    16191619    $location = admin_url( $action ) . $comment->comment_ID;
    16201620
     1621    // Ensure the $comment_id variable passed to the filter is always an ID.
     1622    $comment_id = (int) $comment->comment_ID;
     1623
    16211624    /**
    16221625     * Filters the comment edit link.
     
    16241627     * @since 6.7.0 The $comment_id and $context parameters are now being passed to the filter.
    16251628     *
    1626      * @param string $location The edit link.
    1627      * @param int    $comment_id Optional. Unique ID of the comment to generate an edit link.
    1628      * @param int    $context    Optional. Context to include HTML entities in link. Default 'display'.
     1629     * @param string $location   The edit link.
     1630     * @param int    $comment_id Unique ID of the comment to generate an edit link.
     1631     * @param string $context    Context to include HTML entities in link. Default 'display'.
    16291632     */
    16301633    return apply_filters( 'get_edit_comment_link', $location, $comment_id, $context );
  • trunk/tests/phpunit/tests/link/getEditCommentLink.php

    r58875 r59012  
    128128        $this->assertSame( $expected_url, $actual_url );
    129129    }
     130
     131    /**
     132     * Tests that the 'get_edit_comment_link' filter receives the comment ID, even when a comment object is passed.
     133     *
     134     * @ticket 61727
     135     */
     136    public function test_get_edit_comment_link_filter_uses_id() {
     137        // Add a filter just to catch the $comment_id filter parameter value.
     138        $comment_id_filter_param = null;
     139        add_filter(
     140            'get_edit_comment_link',
     141            function ( $location, $comment_id ) use ( &$comment_id_filter_param ) {
     142                $comment_id_filter_param = $comment_id;
     143                return $location;
     144            },
     145            10,
     146            2
     147        );
     148
     149        // Pass a comment object to get_edit_comment_link().
     150        get_edit_comment_link( get_comment( self::$comment_id ) );
     151
     152        // The filter should still always receive the comment ID, not the object.
     153        $this->assertSame( self::$comment_id, $comment_id_filter_param );
     154    }
    130155}
Note: See TracChangeset for help on using the changeset viewer.