Commit Graph

128 Commits

Author SHA1 Message Date
Boone Gorges
0b7e8399b0 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.

git-svn-id: https://develop.svn.wordpress.org/trunk@34561 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-25 20:39:18 +00:00
Scott Taylor
a98ca8b314 Links: in get_adjacent_post(), add a "get_{$adjacent}_post_excluded_terms" filter.
Props rmccue, Japh, MikeHansenMe.
Fixes #9571.


git-svn-id: https://develop.svn.wordpress.org/trunk@34528 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-25 02:37:29 +00:00
Scott Taylor
04bb8a07d7 Canonical/Rewrite: After [34492], fix rel="canonical" URLs for paginated posts.
Props wonderboymusic, joostdevalk.
See #11694.


git-svn-id: https://develop.svn.wordpress.org/trunk@34496 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-24 14:30:00 +00:00
Scott Taylor
fc3b7b20cd Links: the esc_html() additions in [34444] aren't very nice to screen reader <span>s. Revert those specific calls.
See #14900.


git-svn-id: https://develop.svn.wordpress.org/trunk@34452 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-23 04:25:18 +00:00
Scott Taylor
e2ce2d90fd After [34444​], wp_get_shortlink() can call get_queried_object_id() instead of using the $wp_query global.
See #14900.


git-svn-id: https://develop.svn.wordpress.org/trunk@34445 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-22 20:08:49 +00:00
Scott Taylor
e06ca91cd2 Links: use consistent late-escaping in some HTML link-generation functions:
* `post_comments_feed_link()`
* `edit_post_link()`
* `edit_comment_link()`
* `edit_bookmark_link()`
* `rel_canonical()`

Props niallkennedy, wonderboymusic.
Fixes #14900.


git-svn-id: https://develop.svn.wordpress.org/trunk@34444 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-22 20:05:17 +00:00
Konstantin Obenland
3cd12045d3 Introduce template functions for comment navigation:
* `get_the_comments_navigation()` and `the_comments_navigation()` for navigation to the next and previous page of comments.
* `get_the_comments_pagination()` and `the_comments_pagination()` for paginated navigation between pages of comments. Uses `paginate_comments_links()`.

This reduces the need for themes to define their own sets of comment navigation
functions, like Twenty Fifteen and others.
Completes the navigation template tag API started in #29808 for posts.

Fixes #30589.



git-svn-id: https://develop.svn.wordpress.org/trunk@34367 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-21 16:31:19 +00:00
Drew Jaynes
81e235444a Docs: The $post parameter has been passed to the preview_post_link since 4.0.0.
Fixes a version mixup introduced in [34170].

Props dimadin.
See #24345.


git-svn-id: https://develop.svn.wordpress.org/trunk@34363 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-21 13:16:36 +00:00
John Blackbourn
2894423f19 Revisions are an exception when it comes to the editing UI. The revision post type cannot have its show_ui argument set to true because this allows access to the post type listing, creation, and editing UI, but get_edit_post_link() needs to return a URL for the editing UI for revisions as that's how the revisions UI works.
Fixes #33763


git-svn-id: https://develop.svn.wordpress.org/trunk@34357 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-20 16:37:41 +00:00
Scott Taylor
b55de4e5f8 Feeds/Links: fix feed links for unattached attachments.
Adds unit tests.

Props wonderboymusic, iworks.
Fixes #33693.


git-svn-id: https://develop.svn.wordpress.org/trunk@34336 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-19 20:09:05 +00:00
John Blackbourn
a923d36085 Remove the ability to view the post listing screen and post editing screen for post types with show_ui set to false. It is unexpected and unintended behaviour that this is allowed.
If your plugin or site does rely on this behaviour, the arguments that are passed to `register_post_type()` should be altered so that `show_ui` is `true`, and arguments such as `show_in_menu`, `show_in_nav_menus`, and `show_in_admin_bar` are `false`.

Fixes #33763
Props swissspidy, johnbillion


git-svn-id: https://develop.svn.wordpress.org/trunk@34177 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-15 10:26:22 +00:00
John Blackbourn
9b836740c3 Improve the docblocks for the get_preview_post_link() function and the preview_post_link filter.
See #24345


git-svn-id: https://develop.svn.wordpress.org/trunk@34176 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-15 08:24:54 +00:00
John Blackbourn
47a66713ae Correct the value of the preview query variable added by get_preview_post_link().
See #24345
Props kitchin


git-svn-id: https://develop.svn.wordpress.org/trunk@34175 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-15 08:15:22 +00:00
Scott Taylor
c0d850878a Create a function, get_preview_post_link(), to DRY the logic for applying the 'preview_post_link' filter to a URL.
Props TomHarrigan, wonderboymusic.
Fixes #24345.


git-svn-id: https://develop.svn.wordpress.org/trunk@34170 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-15 04:14:23 +00:00
Scott Taylor
2817bb6557 In get_avatar_data(), promote stdClass objects to WP_Comment if passed.
Props DrewAPicture, ocean90.
Fixes #32619.


git-svn-id: https://develop.svn.wordpress.org/trunk@34160 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-15 01:33:29 +00:00
Sergey Biryukov
13382740b9 Escape class attribute in edit_post_link() after [34098].
Props Offereins.
See #30563.

git-svn-id: https://develop.svn.wordpress.org/trunk@34117 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-14 13:00:31 +00:00
Sergey Biryukov
217c84e613 Docs: Add a changelog entry for the $class argument added to edit_post_link() in [34098].
Fixes #30563.

git-svn-id: https://develop.svn.wordpress.org/trunk@34115 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-14 12:19:55 +00:00
Scott Taylor
f20622f394 In edit_post_link(), add an argument for the class attribute that defaults to post-edit-link.
Props voldemortensen.
Fixes #30563.


git-svn-id: https://develop.svn.wordpress.org/trunk@34098 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-13 23:33:30 +00:00
Boone Gorges
4ebab4dc16 Remove extraneous table join in get_adjacent_post().
Since [29248], a table join has not been necessary to process the
`$excluded_terms` parameter of `get_adjacent_post()`. Aside from adding extra
overhead, this join meant that post records that don't have any corresponding
rows in `wp_term_relationships` were erroneously excluded from results.

Fixes #32833.

git-svn-id: https://develop.svn.wordpress.org/trunk@34088 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-12 20:33:07 +00:00
Scott Taylor
5cce4a3262 After [33961], pass $comment to get_comment_link() where possible to avoid extra cache/db lookups.
See #33638.


git-svn-id: https://develop.svn.wordpress.org/trunk@34042 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-11 06:20:56 +00:00
Scott Taylor
4016b77b1a Add a parameter, $post, to get_{$adjacent}_post_join, get_{$adjacent}_post_where, and get_{$adjacent}_post_sort
Props JustinSainton.
Fixes #24597.


git-svn-id: https://develop.svn.wordpress.org/trunk@33968 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-09 03:49:00 +00:00
Scott Taylor
38d374ab01 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.


git-svn-id: https://develop.svn.wordpress.org/trunk@33963 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-09 02:50:43 +00:00
Scott Taylor
60ba8b05e4 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.


git-svn-id: https://develop.svn.wordpress.org/trunk@33891 602fd350-edb4-49c9-b593-d223f7449a82
2015-09-03 18:16:35 +00:00
Boone Gorges
0c7f2237f0 Pass taxonomy name to filters in get_adjacent_post().
Props sboisvert.
Fixes #33568.

git-svn-id: https://develop.svn.wordpress.org/trunk@33805 602fd350-edb4-49c9-b593-d223f7449a82
2015-08-29 19:58:13 +00:00
Scott Taylor
1fb94edb99 In get_home_url(), import the $pagenow global to avoid having to check if it exists before comparing against it.
Props KalenJohnson.
See #33545.


git-svn-id: https://develop.svn.wordpress.org/trunk@33736 602fd350-edb4-49c9-b593-d223f7449a82
2015-08-25 21:02:14 +00:00
Drew Jaynes
83476bb77f Docs: Add a description and example to the hook docs for the navigation_markup_template filter, introduced in [33714].
Since the value of the filter is passed through `sprintf()` it's important to note that any filtered output needs to contain the expected specifiers.

See #31315.


git-svn-id: https://develop.svn.wordpress.org/trunk@33717 602fd350-edb4-49c9-b593-d223f7449a82
2015-08-23 18:07:41 +00:00
Scott Taylor
d8ba4fde1b Add a filter to _navigation_markup: 'navigation_markup_template'
Props joedolson, mordauk.
Fixes #31315.


git-svn-id: https://develop.svn.wordpress.org/trunk@33714 602fd350-edb4-49c9-b593-d223f7449a82
2015-08-23 16:33:25 +00:00
Drew Jaynes
dfa9da5356 Docs: Fix a minor alignment issue in the DocBlock for get_pagenum_link().
See #32246.


git-svn-id: https://develop.svn.wordpress.org/trunk@33712 602fd350-edb4-49c9-b593-d223f7449a82
2015-08-23 07:18:19 +00:00
Scott Taylor
4b746c4b4e Deprecate post_permalink() (Introduced in 1.0, already had a deprecated argument in 1.3), which just wraps get_permalink() and was only used by XML-RPC in 4 places.
Props solarissmoke.
Fixes #16982.


git-svn-id: https://develop.svn.wordpress.org/trunk@33659 602fd350-edb4-49c9-b593-d223f7449a82
2015-08-20 06:24:00 +00:00
Scott Taylor
f162be6046 For doc block types, favor bool over the few remaining booleans
See #32444.


git-svn-id: https://develop.svn.wordpress.org/trunk@32964 602fd350-edb4-49c9-b593-d223f7449a82
2015-06-27 01:02:12 +00:00
Boone Gorges
4f60683623 Improve error checking in get_edit_term_link().
The function should not throw notices when an improper term or taxonomy is
passed.

Props tmatsuur, MikeHansenMe.
Fixes #32786.

git-svn-id: https://develop.svn.wordpress.org/trunk@32954 602fd350-edb4-49c9-b593-d223f7449a82
2015-06-26 14:12:27 +00:00
Drew Jaynes
e95626a94f Document default values for optional arguments in edit_term_link().
See #32246.


git-svn-id: https://develop.svn.wordpress.org/trunk@32926 602fd350-edb4-49c9-b593-d223f7449a82
2015-06-24 10:55:13 +00:00
Drew Jaynes
bdd00bc8c7 Add missing documentation for the $echo parameter in the DocBlock for edit_term_link().
Props tmatsuur.
Fixes #32776.


git-svn-id: https://develop.svn.wordpress.org/trunk@32925 602fd350-edb4-49c9-b593-d223f7449a82
2015-06-24 10:52:32 +00:00
Scott Taylor
89328eb69f Customizer et al, use elseif in PHP, not else if.
This was corrected via brute force in [31090].

See #32444.


git-svn-id: https://develop.svn.wordpress.org/trunk@32874 602fd350-edb4-49c9-b593-d223f7449a82
2015-06-19 22:00:33 +00:00
Scott Taylor
646c19accf Make sure that all Gravatars are generated by get_avatar() or at least run through apply_filters( 'get_avatar', $avatar ) for the sake of extensibility.
Props miqrogroove, GlennM, SergeyBiryukov.
Fixes #22650.


git-svn-id: https://develop.svn.wordpress.org/trunk@32845 602fd350-edb4-49c9-b593-d223f7449a82
2015-06-18 18:35:04 +00:00
Scott Taylor
22ba68ccb8 Fix doc blocks to link-template.php
See #32444.


git-svn-id: https://develop.svn.wordpress.org/trunk@32606 602fd350-edb4-49c9-b593-d223f7449a82
2015-05-26 18:43:48 +00:00
Andrew Ozz
301bb0b9da Press This: check the bookmarklet version and add the update notice from PHP.
Fixes #31942.

git-svn-id: https://develop.svn.wordpress.org/trunk@32106 602fd350-edb4-49c9-b593-d223f7449a82
2015-04-10 21:07:42 +00:00
Drew Jaynes
f372dd828e Various inline documentation syntax fixes in wp-includes/link-template.php.
See #31888.


git-svn-id: https://develop.svn.wordpress.org/trunk@32042 602fd350-edb4-49c9-b593-d223f7449a82
2015-04-05 16:03:12 +00:00
Andrew Ozz
21da2ccd85 Press This: bump bookmarklet's version. See #31657.
git-svn-id: https://develop.svn.wordpress.org/trunk@31800 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-17 01:18:01 +00:00
Andrew Ozz
e0f843cd81 PressThis:
- Filter and select the content on the PHP side. Then pass only the needed data to JS.
- Add the suggested post title and contend directly to the HTML.
- Standardise the data type names.
- Some cleanup/reduction of the code in the bookmarklet.
See #31373.

git-svn-id: https://develop.svn.wordpress.org/trunk@31693 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-09 21:48:38 +00:00
Boone Gorges
07abae914e In get_next_comments_link(), ensure proper pagination when no 'cpage' query var is found.
The 'cpage' query var is only set when using `comments_template()` to display
comments. If displaying them in a context where 'cpage' is not yet set, the
default value should be 1, not 0.

Props MomDad, couturefreak.
Fixes #20319.

git-svn-id: https://develop.svn.wordpress.org/trunk@31617 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-05 03:56:21 +00:00
Andrew Ozz
f9a6a7aa56 PressThis:
- Improve handling of the data, both from the bookmarklet and from server-side parsing.
- Standardize on processing the data in PHP and remove duplicate code from JS.
- Improve the bookmarklet code and remove pre-filtering of the data.
Part props stephdau, see #31373.

git-svn-id: https://develop.svn.wordpress.org/trunk@31609 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-04 19:28:53 +00:00
Drew Jaynes
79a3048412 Adjust the description for the $extra_attr argument in the DocBlocks for get_avatar_data() and get_avatar().
See [31561]. See #31469.


git-svn-id: https://develop.svn.wordpress.org/trunk@31591 602fd350-edb4-49c9-b593-d223f7449a82
2015-03-01 07:18:42 +00:00
wonderboymusic
2f86fcd9a9 In get_avatar_data() and get_avatar(), allow height and width to be specified separately (both default to size). Also allow arbitrary attributes on the <img> via the extra_attr arg.
Props miqrogroove.
See #31469.


git-svn-id: https://develop.svn.wordpress.org/trunk@31561 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-26 21:16:02 +00:00
Andrew Ozz
2fb11a4ae4 PressThis: go back to loading the minified bookmarklet content with file_get_contents(). Add Grunt task to minify bookmarklet.js on precommit and update it in /src. See #31373.
git-svn-id: https://develop.svn.wordpress.org/trunk@31545 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-25 20:15:46 +00:00
Andrew Ozz
e6bbea8fe7 Press This: JSON encode the URL before appending it to the bookmarklet. See #31373.
git-svn-id: https://develop.svn.wordpress.org/trunk@31537 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-25 03:57:43 +00:00
Andrew Ozz
578a785440 PressThis:
- Hard-code the minified bookmarklet js. Adding the non-minified bookmarklet to the browser bookmarks bar may have unexpected effect.
- Fix type juggling when checking the bookmarklet version.
Props stephdau, see #31373.

git-svn-id: https://develop.svn.wordpress.org/trunk@31535 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-25 03:02:48 +00:00
Andrew Ozz
2e3afd2760 PressThis v2, first run. Props michael-arestad, stephdau, marcelomazza, DrewAPicture, iseulde, afercia, kraftbj, rachelbaker, AramZS, dd32. See #31373.
git-svn-id: https://develop.svn.wordpress.org/trunk@31534 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-25 01:49:26 +00:00
Sergey Biryukov
45d5c5ddbe Remove src from duplicate hook comments for get_avatar and get_avatar_data.
see #21195.

git-svn-id: https://develop.svn.wordpress.org/trunk@31480 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-19 14:58:40 +00:00
Sergey Biryukov
5aac59d178 Replace hardcoded usage of comment-page with the comment pagination base.
props johnbillion, SergeyBiryukov, webord.
fixes #18084.

git-svn-id: https://develop.svn.wordpress.org/trunk@31459 602fd350-edb4-49c9-b593-d223f7449a82
2015-02-14 03:47:02 +00:00