WordPress.org

Make WordPress Core

Ticket #20487: comment_search_20487_v2.diff

File comment_search_20487_v2.diff, 3.0 KB (added by brokentone, 6 years ago)
  • wp-includes/comment.php

     
    222222                        'type' => '',
    223223                        'user_id' => '',
    224224                        'search' => '',
     225                        'search_type' => '',
     226                        'search_field' => '',
    225227                        'count' => false
    226228                );
    227229
     
    322324                if ( '' !== $user_id )
    323325                        $where .= $wpdb->prepare( ' AND user_id = %d', $user_id );
    324326                if ( '' !== $search )
    325                         $where .= $this->get_search_sql( $search, array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ) );
     327                        $where .= $this->get_search_sql( $search, array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ), $search_field, $search_type );
    326328
    327329                $post_fields = array_filter( compact( array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type', ) ) );
    328330                if ( ! empty( $post_fields ) ) {
     
    359361         * @param array $cols
    360362         * @return string
    361363         */
    362         function get_search_sql( $string, $cols ) {
     364        function get_search_sql( $string, $cols, $search_field='', $search_type='' ) {
    363365                $string = esc_sql( like_escape( $string ) );
     366                $wildcard = '%';
     367                if($search_type == 'exact') $wildcard = '';
    364368
    365369                $searches = array();
    366                 foreach ( $cols as $col )
    367                         $searches[] = "$col LIKE '%$string%'";
     370                if($this->query_vars['search_field'] && in_array($search_field, $cols)) {
     371                        $searches[] = $this->query_vars['search_field'] . " LIKE '$wildcard$string$wildcard'";
     372                } else {
     373                        foreach ( $cols as $col )
     374                                $searches[] = "$col LIKE '%$string%'";
     375                }
    368376
     377                if (count($searches) == 1) return ' AND ' . $searches[0];
    369378                return ' AND (' . implode(' OR ', $searches) . ')';
    370379        }
    371380}
  • wp-admin/includes/class-wp-comments-list-table.php

     
    5050                $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : '';
    5151
    5252                $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : '';
     53                $search_type = ( isset( $_REQUEST['s_type'] ) ) ? $_REQUEST['s_type'] : '';
     54                $search_field = ( isset( $_REQUEST['s_field'] ) ) ? $_REQUEST['s_field'] : '';
    5355
    5456                $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : '';
    5557
     
    8789                $args = array(
    8890                        'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status,
    8991                        'search' => $search,
     92                        'search_type' => $search_type,
     93                        'search_field' => $search_field,
    9094                        'user_id' => $user_id,
    9195                        'offset' => $start,
    9296                        'number' => $number,
     
    462466                        }
    463467                        echo '<a href="edit-comments.php?s=';
    464468                        comment_author_IP();
    465                         echo '&amp;mode=detail';
     469                        echo '&amp;mode=detail&amp;s_type=exact&amp;s_field=comment_author_IP';
    466470                        if ( 'spam' == $comment_status )
    467471                                echo '&amp;comment_status=spam';
    468472                        echo '">';