JPKCom Disable Comments

Documentation

Table of Contents

Packages

JPKComDisableComments
JPKComDisableCommentsGitUpdate

Namespaces

JPKComDisableCommentsGitUpdate

Constants

JPKCOM_DISABLE_COMMENTS_VERSION  : mixed = '1.0.13'

Functions

jpkcom_disable_comments_close_rest_status()  : mixed
Report comments and pings as closed in a REST post response.
jpkcom_disable_comments_is_note_request()  : bool
Whether a REST request on the comment routes is a block-editor Notes request.
jpkcom_disable_comments_is_note_query()  : bool
Whether a comment query asks for notes and nothing else.

Constants

Functions

jpkcom_disable_comments_close_rest_status()

Report comments and pings as closed in a REST post response.

jpkcom_disable_comments_close_rest_status(mixed $response) : mixed

Removing post type support is not enough for post, page and attachment: WP_REST_Posts_Controller::get_item_schema() carries a hardcoded $fixed_schemas list for those three in which comments is always present - the post_type_supports() check applies only to other post types. The schema therefore keeps comment_status and ping_status, and the response kept reporting the stored value, typically open, on a site that refuses comments.

The fields are rewritten rather than removed, so the block editor and any other consumer keep the response shape they expect.

A REST write can still store comment_status: open - the schema stays writable - but the value is inert: comments_open is filtered to false, and this filter reports the field as closed regardless.

Parameters
$response : mixed

Prepared response, a WP_REST_Response in practice.

Tags
since
1.0.9
Return values
mixed —

The response with both status fields set to closed.

jpkcom_disable_comments_is_note_request()

Whether a REST request on the comment routes is a block-editor Notes request.

jpkcom_disable_comments_is_note_request(WP_REST_Request $request) : bool

Notes (core since 6.9) are comments of type note, created and read through /wp/v2/comments. A request counts as a note request when

  • it targets the collection route and its type parameter is exactly note - the same strict comparison core's controller makes ('note' === $request['type']), for GET and POST alike;
  • it targets the item route /wp/v2/comments/<id> and that comment exists and is of type note (any method; core refuses to change a comment's type on update).

The route is read from get_route() and matched the way core matches it: case-insensitively, against the same [\d]+ item pattern, and with $ accepting a trailing newline as core's @^…$@i does. A trailing slash is tolerated as well. The ID is taken from the route because the URL parameters are not populated yet on rest_pre_dispatch: dispatch() matches the route only after the filter, and a batch sub-request is passed with its URL parameters cleared.

The controller itself does not use the ID in the route: it reads $request['id'], and get_param() prefers the JSON body, the form body and the query string to the URL parameters. /wp/v2/comments/<note>?id=<n> would therefore load comment <n>. An item request with an id parameter is a note request only when that parameter is numeric and equal to the ID in the route. Read here, before routing, get_param( 'id' ) returns exactly the value core will prefer later, since the URL parameters are still empty.

Core's own permission checks still decide who may read or write notes.

Parameters
$request : WP_REST_Request

The request about to be dispatched.

Tags
since
1.0.11
Return values
bool —

True for a note request, false for anything else.

jpkcom_disable_comments_is_note_query()

Whether a comment query asks for notes and nothing else.

jpkcom_disable_comments_is_note_query(WP_Comment_Query $query) : bool

Mirrors how WP_Comment_Query::get_comment_ids() reads the requested types: type and type__in are merged, and an empty string means "all types". The query counts as a note query only when, after dropping those empty entries, exactly note remains. all, comment, an empty type, a mix such as [ 'note', 'comment' ] or a spelling core would not treat as a note (NOTE, note,comment) do not qualify.

Parameters
$query : WP_Comment_Query

The query about to run.

Tags
since
1.0.11
Return values
bool —

True when only notes are requested.

Search results