Skip to content

Query: Exclude notes from comment feed queries.#12486

Open
adamsilverstein wants to merge 12 commits into
WordPress:trunkfrom
adamsilverstein:fix/65613-notes-comment-feed
Open

Query: Exclude notes from comment feed queries.#12486
adamsilverstein wants to merge 12 commits into
WordPress:trunkfrom
adamsilverstein:fix/65613-notes-comment-feed

Conversation

@adamsilverstein

Copy link
Copy Markdown
Member

Trac ticket: https://core.trac.wordpress.org/ticket/65613

Problem

Internal notes (the note comment type) still appear publicly in the RSS/Atom comment feeds at <site-url>/comments/feed, in archive/search comment feeds, and in singular post comment feeds.

[61105] (#64145) excluded the note type in WP_Comment_Query, but WP_Query builds its comment feed queries with raw SQL that bypasses WP_Comment_Query entirely, so the exclusion never applies to feeds.

Fix

Add comment_type != 'note' to the three raw comment feed WHERE clauses in WP_Query:

  • the archive/search comment feed query,
  • the non-singular (e.g. front page) comment feed query, and
  • the singular post comment feed query.

This matches the exclusion behavior established in WP_Comment_Query and wp_count_comments().

Testing

Adds three tests to Tests_Query_CommentFeed, one per feed query path, each creating an approved note comment and asserting it does not appear in the feed while regular comments still do. All three fail before the fix and pass after.

Full query (1878 tests), comment (547 tests), and feed/feeds (50 tests) groups pass locally.

westonruter and others added 8 commits July 4, 2026 16:52
Derive the `Disallow` and `Allow` directives in `do_robots()` from `admin_url()` and `admin_url( 'admin-ajax.php' )` rather than from a hardcoded `/wp-admin/` path built off `site_url()`. Only the URL path portion is emitted, as before, so installs that relocate or filter their admin URL now produce a correct default `robots.txt`.

Also guard the `Content-Type` header with a `headers_sent()` check to avoid a warning when the headers have already been sent.

Developed in WordPress#11998.
Follow-up to r34985.

Props masteradhoc, yogeshbhutkar, hrohh, westonruter, mukeshpanchal27, 1ucay.
Fixes #63467.


git-svn-id: https://develop.svn.wordpress.org/trunk@62633 602fd350-edb4-49c9-b593-d223f7449a82
The `ini_get()` function is called unconditionally early in the bootstrap process, so there is no need for subsequent `function_exists( 'ini_get' )` checks.

Follow-up to [44986], [45104].

Props siliconforks, shreyasikhar26, ankitkumarshah, westonruter, SergeyBiryukov.
Fixes #65423.

git-svn-id: https://develop.svn.wordpress.org/trunk@62634 602fd350-edb4-49c9-b593-d223f7449a82
This brings the `WP_Error` class to full PHPStan rule level 10 compliance.

Also make use of null coalescing operator where appropriate, and simplify `has_errors()` method.

Developed in WordPress#12405.
Follow-up to r42761, r49115, r49116.

See #64898, #64897.


git-svn-id: https://develop.svn.wordpress.org/trunk@62635 602fd350-edb4-49c9-b593-d223f7449a82
…p()` and `::chown()`.

This applies the equivalent fix which had previously been done to `::chmod()`. Tests are added for all three methods.

Developed in subset of WordPress#11593.
Follow-up to r12997.

Fixes #65584.
See #65409, WordPress#11261.


git-svn-id: https://develop.svn.wordpress.org/trunk@62636 602fd350-edb4-49c9-b593-d223f7449a82
Change the optional constructor argument of `WP_Filesystem_FTPext`, `WP_Filesystem_ftpsockets`, and `WP_Filesystem_SSH2` from an empty string default to an empty `array`, matching how the argument is actually consumed, and improve the associated DocBlocks.

These classes were also brought to adherence with PHPStan rule level 10:

* Add `FileListing` and `Options` array shapes, and initialize each transport's `$options` to a complete default array before any early return.
* Correct several inaccurate `@return` descriptions, including the `group()` methods that had been describing the owner.
* Allow `WP_Filesystem_SSH2::connect()` to be retried after a failed connection attempt.
* Stop `WP_Filesystem_FTPext::parselisting()` from leaking its intermediate date-parsing keys into the returned listing.
* Add `ext-ftp` and `ext-ssh2` to the suggested extensions in `composer.json`.

Developed in WordPress#11593.
Follow-up to r62635, r62636.

Props soean, westonruter, mukesh27.
See #65584, #64898.
Fixes #65409.


git-svn-id: https://develop.svn.wordpress.org/trunk@62637 602fd350-edb4-49c9-b593-d223f7449a82
Follow-up to [52292].

Props Soean.
See #64894.

git-svn-id: https://develop.svn.wordpress.org/trunk@62638 602fd350-edb4-49c9-b593-d223f7449a82
The 'note' comment type is internal and must not be exposed publicly,
but the raw comment feed queries built by WP_Query do not exclude it.

See #65613.
WP_Query builds comment feed queries with raw SQL, bypassing the
'note' comment type exclusion that WP_Comment_Query applies. As a
result, internal notes were exposed publicly in the main comments
feed, archive/search comment feeds, and singular post comment feeds.

Add the 'note' type exclusion to all three feed WHERE clauses so
notes never appear in public feeds, consistent with [61105].

See #65613.
@github-actions

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @SergeyBiryukov602fd350-edb4-49c9-b593-d223f7449a82.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

Core Committers: Use this line as a base for the props when committing in SVN:

Props westonruter, adamsilverstein.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@github-actions

Copy link
Copy Markdown

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

@adamsilverstein

Copy link
Copy Markdown
Member Author

ps. I've started working on https://core.trac.wordpress.org/ticket/35214

@westonruter

Copy link
Copy Markdown
Member

I confirmed that the three new tests all fail when running against trunk as expected:

There were 3 failures:

1) Tests_Query_CommentFeed::test_main_comment_feed_should_exclude_notes
Comments feed should not include notes.
Failed asserting that an array does not contain 17.

/var/www/tests/phpunit/tests/query/commentFeed.php:113

2) Tests_Query_CommentFeed::test_archive_comment_feed_should_exclude_notes
Archive comments feed should not include notes.
Failed asserting that an array does not contain 18.

/var/www/tests/phpunit/tests/query/commentFeed.php:142

3) Tests_Query_CommentFeed::test_single_comment_feed_should_exclude_notes
Singular comments feed should not include notes.
Failed asserting that an array does not contain 19.

/var/www/tests/phpunit/tests/query/commentFeed.php:175

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants