Commit Graph

329 Commits

Author SHA1 Message Date
Boone Gorges 18d6b3c8dc Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.

Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.

Here's the breakdown:

* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.

Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.

Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561


git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 20:40:25 +00:00
Scott Taylor 498b2d7e33 Comments: In `comment_form()`, move the comment textarea to the top for logged-out users when replying, improves keyboard/focus navigation.
Rehabilitate errant tabbing and extra unnecessary `<?php ?>` toggling.

Props afercia, adamsilverstein.
Fixes #29974.

Built from https://develop.svn.wordpress.org/trunk@34525


git-svn-id: http://core.svn.wordpress.org/trunk@34489 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-24 22:00:28 +00:00
Scott Taylor 2c23ca7411 Comments: in `comment_form()`, add args for `cancel_reply_before` and `cancel_reply_after` to eradicate remaining hard-coded HTML bits.
Props MikeHansenMe.
Fixes #23797.


Built from https://develop.svn.wordpress.org/trunk@34523


git-svn-id: http://core.svn.wordpress.org/trunk@34487 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-24 21:33:26 +00:00
Scott Taylor 169db9dbb1 Comments: add a `'comment_excerpt_length'` filter to `get_comment_excerpt()`.
Create the first ever unit tests for `get_comment_excerpt()`.

Props dannydehaan, wonderboymusic.
Fixes #27526.

Built from https://develop.svn.wordpress.org/trunk@34520


git-svn-id: http://core.svn.wordpress.org/trunk@34484 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-24 21:05:25 +00:00
Scott Taylor 595bad9f37 Comments: In `comments_template()`, set `$wp_query->comments_by_type` to empty array if not separating comments. The value becomes stale otherwise. Edge case.
Props jakub.tyrcha.
Fixes #14809.

Built from https://develop.svn.wordpress.org/trunk@34503


git-svn-id: http://core.svn.wordpress.org/trunk@34467 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-24 16:31:24 +00:00
Boone Gorges a034a3394a Bail early when invalid ID is passed to `get_comment_class()`.
This helps to avoid PHP notices later in the function.

Props walterebert, dipesh.kakadiya, DrewAPicture.
Fixes #33947.
Built from https://develop.svn.wordpress.org/trunk@34454


git-svn-id: http://core.svn.wordpress.org/trunk@34418 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-23 14:09:26 +00:00
Scott Taylor 1d0774e784 Add `title_reply_before` and `title_reply_after` args to `comment_form()` to allow the "Leave a Reply" heading level to be changed.
Props tyxla.
Fixes #33775.

Built from https://develop.svn.wordpress.org/trunk@34308


git-svn-id: http://core.svn.wordpress.org/trunk@34272 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-18 19:18:26 +00:00
Boone Gorges 32887d3dfb Lazy-load comment meta on single post pages.
[34268] introduced cache priming for commentmeta, enabled by default. To
ensure performance on single post pages - where commentmeta is most likely
to cause performance issues - we disable up-front cache-priming. Instead, we
prime commentmeta caches for all comments in the loop the first time
`get_comment_meta()` is called on the page.

Props bradt, dd32, wonderboymusic, boonebgorges.
Fixes #16894.
Built from https://develop.svn.wordpress.org/trunk@34270


git-svn-id: http://core.svn.wordpress.org/trunk@34234 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-17 20:01:24 +00:00
Scott Taylor af593128a7 Revert [33925], by-reference array manipulation is breaking comments in some themes.
This implementation is losing its shine.

See #16894.

Built from https://develop.svn.wordpress.org/trunk@34245


git-svn-id: http://core.svn.wordpress.org/trunk@34209 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 18:14:25 +00:00
Drew Jaynes b1f176582c Docs: Add changelog entries for parameters where `WP_Comment` object support was added in [33961].
See #33638. See #32246.

Built from https://develop.svn.wordpress.org/trunk@34237


git-svn-id: http://core.svn.wordpress.org/trunk@34201 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-16 13:52:25 +00:00
Scott Taylor 4139daea5e Apply the new `'respond_link'` filter in `comments_popup_link()` if `$number` is `0` before outputting the URL.
Props joedolson.
Fixes #29454.

Built from https://develop.svn.wordpress.org/trunk@34216


git-svn-id: http://core.svn.wordpress.org/trunk@34180 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-15 20:46:35 +00:00
Scott Taylor 41c5bfb493 Comments: `get_comments_link()` should return a link with `#respond` as the hash instead of `#comments` if `get_comments_number()` returns `0`.
Props cgrymala, wonderboymusic.
Fixes #19893.

Built from https://develop.svn.wordpress.org/trunk@34075


git-svn-id: http://core.svn.wordpress.org/trunk@34043 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-12 07:36:25 +00:00
Scott Taylor b453af5718 When clicking "Show More Comments" in the Comments meta box on the Edit Post screen, change the click behavior to call a new class method on `commentsBox`, `->load()`, that resets `st` (cool name) to the number of visible `<tr>`s before calling `->get()`. This will account for spam'd and trash'd comments when returning comments at the proper offset.
Props utkarshpatel.
Fixes #33829.

Built from https://develop.svn.wordpress.org/trunk@34069


git-svn-id: http://core.svn.wordpress.org/trunk@34037 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-12 02:28:26 +00:00
Scott Taylor fc328f5484 After [33961], pass `$comment` to `get_comment_author_link()` where possible to avoid extra cache/db lookups.
See #33638.

Built from https://develop.svn.wordpress.org/trunk@34039


git-svn-id: http://core.svn.wordpress.org/trunk@34007 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-11 06:05:24 +00:00
Scott Taylor 592f3d9c6c After [33961], ensure that comment filters that expect a comment ID are receiving one.
Props dimadin.
Fixes #33809.

Built from https://develop.svn.wordpress.org/trunk@34008


git-svn-id: http://core.svn.wordpress.org/trunk@33977 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-10 18:10:25 +00:00
Scott Taylor d973339738 After [33891], `get_comment()` returns `global $comment` if no args are passed and the global is set (after setting the default to `null` here). This allows us to ditch global comment imports.
See #33638.

Built from https://develop.svn.wordpress.org/trunk@33963


git-svn-id: http://core.svn.wordpress.org/trunk@33932 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-09 02:51:24 +00:00
Scott Taylor 67f90df6a4 `Walker_Comment` should be in its own file. Loaded now via `wp-includes/comment.php`, which makes it 100% BC.
See #33413.

Built from https://develop.svn.wordpress.org/trunk@33962


git-svn-id: http://core.svn.wordpress.org/trunk@33931 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-09 02:41:24 +00:00
Scott Taylor 433c786bde After [33891], a lot of comment functions can take `WP_Comment` instead of only accepting `comment_ID`. Update the `@param` docs to reflect this.
See #33638.

Built from https://develop.svn.wordpress.org/trunk@33961


git-svn-id: http://core.svn.wordpress.org/trunk@33930 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-09 02:34:24 +00:00
Scott Taylor c231add9fe In `wp_list_comments()`, update the comment meta cache when the comments derive from `WP_Query` and the new `->comment_meta_cached` prop is `false`.
There are no uses of `wp_list_comments()` in Core where `$comments` are passed as the 2nd argument.

Adds unit tests.

Props wonderboymusic, bradt.
Fixes #16894.

Built from https://develop.svn.wordpress.org/trunk@33925


git-svn-id: http://core.svn.wordpress.org/trunk@33894 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-05 22:25:24 +00:00
Sergey Biryukov 695d3ee98b Merge two strings in `Walker_Comment::comment()` and `Walker_Comment::html5_comment()`.
Props pavelevap.
Fixes #33744.
Built from https://develop.svn.wordpress.org/trunk@33919


git-svn-id: http://core.svn.wordpress.org/trunk@33888 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-05 20:46:24 +00:00
Scott Taylor e73ee5ac98 Introduce `WP_Comment` class to model/strongly-type rows from the comments database table. Inclusion of this class is a pre-req for some more general comment cleanup and sanity.
* Takes inspiration from `WP_Post` and adds sanity to comment caching. 
* Clarifies when the current global value for `$comment` is returned. The current implementation in `get_comment()` introduces side effects and an occasion stale global value for `$comment` when comment caches are cleaned.
* Strongly-types `@param` docs
* This class is marked `final` for now

Props wonderboymusic, nacin.

See #32619.

Built from https://develop.svn.wordpress.org/trunk@33891


git-svn-id: http://core.svn.wordpress.org/trunk@33860 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-03 18:17:24 +00:00
Sergey Biryukov f59f2a8e4f Restore `rel='nofollow'` for comment reply links to reduce extra crawling by search engines.
This reverts [16230], which didn't have enough review at the time of commit.

props joostdevalk.
see #22889, #18547, #16881.
Built from https://develop.svn.wordpress.org/trunk@33047


git-svn-id: http://core.svn.wordpress.org/trunk@33018 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-02 11:09:25 +00:00
Mark Jaquith cf38b016e8 Revert [33038] because of objections raised on #22889 and #31590
Built from https://develop.svn.wordpress.org/trunk@33042


git-svn-id: http://core.svn.wordpress.org/trunk@33013 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-02 00:47:24 +00:00
Mark Jaquith d51f1c1a0f Restore `$noreplytext` default value in `comment_form_title()`
props ocean90
see #22889
Built from https://develop.svn.wordpress.org/trunk@33039


git-svn-id: http://core.svn.wordpress.org/trunk@33010 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-01 21:51:25 +00:00
Mark Jaquith 9d11efe23c Say goodbye to ?replytocom=123 links and their URL pollution.
* Comment reply links continue to use JS as before.
* ?replytocom=123 links are deprecated.

props joostdevalk
fixes #22889
Built from https://develop.svn.wordpress.org/trunk@33038


git-svn-id: http://core.svn.wordpress.org/trunk@33009 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-07-01 21:42:25 +00:00
Konstantin Obenland 898bb2ed34 Remove allowed tags from comment form.
It can be confusing to users and for most it is not relevant.
Commenters comfortable with HTML will know which tags are likely
to be accepted.

Props krogsgard, rachelbaker.
Fixes #30157.


Built from https://develop.svn.wordpress.org/trunk@32858


git-svn-id: http://core.svn.wordpress.org/trunk@32829 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-19 14:15:26 +00:00
Scott Taylor d71d2c062e In `get_comment_reply_link()`, when generating the reply link, add the `replytocom` query arg to the result of `get_permalink()` on the current `$post`, instead of the current global request URI.
Props nazmul.hossain.nihal.
Fixes #31333.

Built from https://develop.svn.wordpress.org/trunk@32786


git-svn-id: http://core.svn.wordpress.org/trunk@32757 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-16 00:19:25 +00:00
Andrew Nacin 7080c8e24b Update comment caches in WP_Comment_Query, rather than comments template.
props dd32.
fixes #31081.

Built from https://develop.svn.wordpress.org/trunk@32769


git-svn-id: http://core.svn.wordpress.org/trunk@32740 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-06-14 19:21:25 +00:00
Scott Taylor bd8fafea54 Use `void` instead of `null` where appropriate when pipe-delimiting `@return` types. If a `@return` only contains `void`, remove it.
See #32444.

Built from https://develop.svn.wordpress.org/trunk@32568


git-svn-id: http://core.svn.wordpress.org/trunk@32538 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-24 05:40:25 +00:00
Scott Taylor 876918dc53 Add missing doc blocks to `comment-template.php`.
See #32444.

Built from https://develop.svn.wordpress.org/trunk@32567


git-svn-id: http://core.svn.wordpress.org/trunk@32537 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-24 05:19:24 +00:00
Sergey Biryukov 96f787260f In `comment_form()`, ensure that filtered arguments contain all required default values.
props boonebgorges.
fixes #32312 for trunk.
Built from https://develop.svn.wordpress.org/trunk@32511


git-svn-id: http://core.svn.wordpress.org/trunk@32481 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-19 01:04:25 +00:00
Sergey Biryukov ed0da72d97 Replace `echo __()` with `_e()`.
props marsjaninzmarsa.
fixes #32239.
Built from https://develop.svn.wordpress.org/trunk@32333


git-svn-id: http://core.svn.wordpress.org/trunk@32304 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-05-03 16:18:28 +00:00
Helen Hou-Sandí 3fdd3ba9b5 Don't add a class for comment authors who are members of the current site.
Reverts [32245] and [31518]. We'll keep the whitespace and comment clarification, though.

see #24054.

Built from https://develop.svn.wordpress.org/trunk@32259


git-svn-id: http://core.svn.wordpress.org/trunk@32230 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-21 23:36:25 +00:00
Helen Hou-Sandí f8c7817077 Comment: rename the `comment-author-is-site-member` class to `bysiteuser` for consistency.
Final decision on keeping the class yet to be made.

props DrewAPicture.
see #24054.

Built from https://develop.svn.wordpress.org/trunk@32245


git-svn-id: http://core.svn.wordpress.org/trunk@32216 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-21 14:20:25 +00:00
Drew Jaynes 88906c324b Remove backtick-escaping around a core function in the hook docs for the `comment_form_submit_field` filter.
See [31699]. See #31888.

Built from https://develop.svn.wordpress.org/trunk@32037


git-svn-id: http://core.svn.wordpress.org/trunk@32016 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-04-05 15:39:29 +00:00
Dominik Schilling 7de1a2e143 Comments: Move HTML tags for screen reader text into translatable strings.
Placeholders aren't helpful and it's much easier to make a mistake if you're dealing with placeholders.
Introduced in [31388].

props pento.
fixes #26553.
Built from https://develop.svn.wordpress.org/trunk@31821


git-svn-id: http://core.svn.wordpress.org/trunk@31803 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-18 21:52:27 +00:00
Drew Jaynes 110d60c6cf Add a changelog entry to the DocBlock for `comment_form()` for the `class_submit` argument added in 4.1.
See [29809]. See #20446.

Built from https://develop.svn.wordpress.org/trunk@31803


git-svn-id: http://core.svn.wordpress.org/trunk@31785 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-17 18:38:29 +00:00
Boone Gorges 7e7a0304d2 Improved customizability for the Submit button in `comment_form()`.
The new 'submit_button' and 'submit_field' parameters for `comment_form()`
allow developers to modify the markup of the submit button and its wrapper.
These params are accompanied by targeted 'comment_form_submit_button' and
'comment_form_submit_field' filters on the concatenated markup.

Props coffee2code, morpheu5, DrewAPicture, boonebgorges.
Fixes #15015.
Built from https://develop.svn.wordpress.org/trunk@31699


git-svn-id: http://core.svn.wordpress.org/trunk@31680 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-03-10 19:08:26 +00:00
Jeremy Felt 646e643e5d Add `comment-author-is-site-member` class to comment output for site members.
Add a class to allow targeting of comments made by members of a site rather than users of the entire network.

Props Viper007Bond, MikeHansenMe.

Fixes #24054.

Built from https://develop.svn.wordpress.org/trunk@31518


git-svn-id: http://core.svn.wordpress.org/trunk@31499 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-23 02:52:24 +00:00
Sergey Biryukov 612b9e8ffd Replace hardcoded usage of `comment-page` with the comment pagination base.
props johnbillion, SergeyBiryukov, webord.
fixes #18084.
Built from https://develop.svn.wordpress.org/trunk@31459


git-svn-id: http://core.svn.wordpress.org/trunk@31440 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-14 03:48:27 +00:00
Sergey Biryukov 7ff18dae4e Add `.comment-reply-login` class to `get_post_reply_link()`, for consistency with `get_comment_reply_link()`.
props johnjamesjacoby.
fixes #31298.
Built from https://develop.svn.wordpress.org/trunk@31412


git-svn-id: http://core.svn.wordpress.org/trunk@31393 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-11 16:11:28 +00:00
Sergey Biryukov 973d157615 Switch to a string placeholder, as `number_format_i18n()` returns a string.
see #26553.
Built from https://develop.svn.wordpress.org/trunk@31402


git-svn-id: http://core.svn.wordpress.org/trunk@31383 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-10 05:45:28 +00:00
Sergey Biryukov fdfd15aacc Use `_n()` in `comments_popup_link()` when setting the default string to display if there are more than one comment.
see #26553.
Built from https://develop.svn.wordpress.org/trunk@31401


git-svn-id: http://core.svn.wordpress.org/trunk@31382 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-10 02:51:28 +00:00
Aaron Jorbin c99149419d Add translator comments for new strings.
These strings were added in [31388].

Props ocean90.
Fixes 26553.


Built from https://develop.svn.wordpress.org/trunk@31389


git-svn-id: http://core.svn.wordpress.org/trunk@31370 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-09 20:15:27 +00:00
Aaron Jorbin 4f08e9d383 Use screen reader text instead of a title attribute in comments_popup_link
To better understand screen reader text, check out https://make.wordpress.org/accessibility/2015/02/09/hiding-text-for-screen-readers-with-wordpress-core/

Screen Reader text improves the user experience for screen reader users. It provides additional context for links, document forms and other pieces of a page that may exist visually, but are lost when looking only at the html of a site.  This does change the output of comments_popup_link if you don't pass in values for $zero, $one, $more or $none. Theme authors can and should style <code>.screen-reader-text</code> in ways that are recommended in the above article to hide it visually.

Props joedolson
Fixes #26553




Built from https://develop.svn.wordpress.org/trunk@31388


git-svn-id: http://core.svn.wordpress.org/trunk@31369 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-02-09 19:27:28 +00:00
Scott Taylor 5f9a800110 In `comment_form()`, add the HTML5 `required` attribute next to `aria-required` in fields that utilize it.
Props MMN-o.
Fixes #24732.

Built from https://develop.svn.wordpress.org/trunk@31204


git-svn-id: http://core.svn.wordpress.org/trunk@31185 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-16 15:56:23 +00:00
Sergey Biryukov 6e29458407 Remove a redundant inline comment with a typo.
props nicnicnicdevos.
fixes #30956.
Built from https://develop.svn.wordpress.org/trunk@31103


git-svn-id: http://core.svn.wordpress.org/trunk@31084 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-08 21:29:24 +00:00
Scott Taylor 60b0cd7943 The keyword `elseif` should be used instead of `else if` so that all control keywords look like single words.
This was a mess, is now standardized across the codebase, except for a few 3rd-party libs. 

See #30799.

Built from https://develop.svn.wordpress.org/trunk@31090


git-svn-id: http://core.svn.wordpress.org/trunk@31071 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-08 07:05:25 +00:00
Scott Taylor f5f3006981 Remove whitespace side effects from `comment_form()`.
Props timersys.
Fixes #30500.

Built from https://develop.svn.wordpress.org/trunk@31036


git-svn-id: http://core.svn.wordpress.org/trunk@31017 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-01-03 06:27:24 +00:00
Drew Jaynes ad297dab6d Correctly capitalize JavaScript throughout core docs.
Fixes #30569.

Built from https://develop.svn.wordpress.org/trunk@30695


git-svn-id: http://core.svn.wordpress.org/trunk@30685 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-12-02 00:31:22 +00:00