Skip to content

New REST API Endpoints for the block editor #95

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 91 commits into
base: feature/helpers
Choose a base branch
from

Conversation

s3rgiosan
Copy link
Member

@s3rgiosan s3rgiosan commented Feb 18, 2025

Warning

This PR is based on top of #96

Description of the Change

This PR adds REST API endpoints for searching, retrieving and managing post relationships, improving integration with the Block Editor and other WordPress components.

Closes #78

How to test the Change

Changelog Entry

  • Added - GET /content-connect/v2/relationships - Retrieves all relationships by type.
  • Added - GET /content-connect/v2/post/{post_id}/relationships - Retrieve all relationships associated with a post.
  • Added - GET /content-connect/v2/post/{post_id}/related - Retrieve entities related to a post.
  • Added - POST /content-connect/v2/post/{post_id}/related - Update the list of related entities for a post.
  • Added - PUT /content-connect/v2/post/{post_id}/related - Add a related entity to a post.
  • Added - DELETE /content-connect/v2/post/{post_id}/related - Remove a related entity from a post.

Credits

Props @s3rgiosan

Checklist:

dependabot bot and others added 30 commits March 1, 2023 18:02
Bumps [minimist](https://github.com/minimistjs/minimist), [minimist](https://github.com/minimistjs/minimist) and [mkdirp](https://github.com/isaacs/node-mkdirp). These dependencies needed to be updated together.

Updates `minimist` from 1.2.0 to 1.2.8
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](minimistjs/minimist@v1.2.0...v1.2.8)

Updates `minimist` from 1.2.5 to 1.2.8
- [Release notes](https://github.com/minimistjs/minimist/releases)
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](minimistjs/minimist@v1.2.0...v1.2.8)

Updates `mkdirp` from 0.5.1 to 0.5.6
- [Release notes](https://github.com/isaacs/node-mkdirp/releases)
- [Changelog](https://github.com/isaacs/node-mkdirp/blob/main/CHANGELOG.md)
- [Commits](isaacs/node-mkdirp@0.5.1...v0.5.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
- dependency-name: minimist
  dependency-type: indirect
- dependency-name: mkdirp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Bumps the npm_and_yarn group with 10 updates:

| Package | From | To |
| --- | --- | --- |
| [braces](https://github.com/micromatch/braces) | `2.3.2` | `3.0.3` |
| [watchify](https://github.com/browserify/watchify) | `3.11.1` | `4.0.0` |
| [browserify-sign](https://github.com/crypto-browserify/browserify-sign) | `4.0.4` | `4.2.3` |
| [elliptic](https://github.com/indutny/elliptic) | `6.5.4` | `6.6.1` |
| [fsevents](https://github.com/fsevents/fsevents) | `1.2.7` | `2.3.3` |
| [got](https://github.com/sindresorhus/got) | `7.1.0` | `11.8.6` |
| [vue-resource](https://github.com/pagekit/vue-resource) | `1.3.4` | `1.5.3` |
| [shell-quote](https://github.com/ljharb/shell-quote) | `1.6.1` | `1.8.2` |
| [tough-cookie](https://github.com/salesforce/tough-cookie) | `2.5.0` | `removed` |
| [node-sass](https://github.com/sass/node-sass) | `7.0.0` | `9.0.0` |


Updates `braces` from 2.3.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/commits/3.0.3)

Updates `watchify` from 3.11.1 to 4.0.0
- [Release notes](https://github.com/browserify/watchify/releases)
- [Changelog](https://github.com/browserify/watchify/blob/master/CHANGELOG.md)
- [Commits](browserify/watchify@v3.11.1...v4.0.0)

Updates `browserify-sign` from 4.0.4 to 4.2.3
- [Changelog](https://github.com/browserify/browserify-sign/blob/main/CHANGELOG.md)
- [Commits](browserify/browserify-sign@v4.0.4...v4.2.3)

Updates `elliptic` from 6.5.4 to 6.6.1
- [Commits](indutny/elliptic@v6.5.4...v6.6.1)

Updates `fsevents` from 1.2.7 to 2.3.3
- [Release notes](https://github.com/fsevents/fsevents/releases)
- [Commits](fsevents/fsevents@v1.2.7...v2.3.3)

Updates `got` from 7.1.0 to 11.8.6
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](sindresorhus/got@v7.1.0...v11.8.6)

Updates `vue-resource` from 1.3.4 to 1.5.3
- [Release notes](https://github.com/pagekit/vue-resource/releases)
- [Commits](pagekit/vue-resource@1.3.4...1.5.3)

Updates `shell-quote` from 1.6.1 to 1.8.2
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](ljharb/shell-quote@v1.6.1...v1.8.2)

Removes `tough-cookie`

Updates `node-sass` from 7.0.0 to 9.0.0
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](sass/node-sass@v7.0.0...v9.0.0)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: watchify
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: browserify-sign
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: elliptic
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: fsevents
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: got
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: vue-resource
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: shell-quote
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: tough-cookie
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: node-sass
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>
# Conflicts:
#	package-lock.json
# Conflicts:
#	package-lock.json
#	package.json
# Conflicts:
#	includes/Registry.php
# Conflicts:
#	content-connect.php
#	includes/API/Search.php
#	includes/Plugin.php
@jeffpaul jeffpaul added this to the 1.7.0 milestone Mar 10, 2025
@s3rgiosan
Copy link
Member Author

Hi @rickalee @jeffpaul, this is ready for review. This PR provides the foundational work for #94, and #97.

@s3rgiosan s3rgiosan requested a review from jeffpaul March 14, 2025 17:16
@s3rgiosan
Copy link
Member Author

I've created a try/block-editor-ui all-in-one branch to make it easier to test the features in both the block and classic editors, as well as the Query Loop integration.

@s3rgiosan
Copy link
Member Author

Added a new endpoint GET /content-connect/v2/relationships that retrieves all relationships by type (post-to-post or post-to-user).


switch ( $rel_type ) {
case 'post-to-post':
$relationships = get_post_to_post_relationships_by();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to be able to pass arguments to this function: $field and $value would let users filter this list to a specific post type.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's possible to filter relationships now that I added the filter_by and filter_value parameters to the endpoint, @benlk.

@benlk
Copy link

benlk commented May 19, 2025

The new API endpoint at /content-connect/v2/relationships/ is returning 404 on my site, and doesn't appear in the enumerationn of endpoints at /content-connect/v2/.

@s3rgiosan
Copy link
Member Author

s3rgiosan commented May 22, 2025

The new API endpoint at /content-connect/v2/relationships/ is returning 404 on my site, and doesn't appear in the enumerationn of endpoints at /content-connect/v2/.

@benlk Which branch are you using? This one or the try/block-editor-ui branch?

@s3rgiosan
Copy link
Member Author

@rickalee I've added the links that we talked about on our last call.

For a specific post, the WP core REST endpoint (http://content-connect.test/wp-json/wp/v2/<post_type>/<post_id>) response will be something like:

Screenshot 2025-05-26 at 18 25 15

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Code Review
Development

Successfully merging this pull request may close these issues.

Expose functionality through WP REST API
3 participants