Comments (6)
Hey @johnboylesingfield. Thank you for the report.
This is the default behavior. The block editor uses the media details slugs for the default image sizes like medium
,large
or full
. If you override any of the width or height it will store it as a custom style.
Here is how it works:
If you use any of the default image sizes then querying the width and height is null
. Instead it uses the sizeSlug
attribute:
{
"apiVersion": 2,
"name": "core/image",
"renderedHtml": "\n<figure class=\"wp-block-image size-full\"><img src=\"http://mysite.local/wp-content/uploads/2023/03/3F3F3F3F3F3F_3F3F3F3F3F3F3F-1.webp\" alt=\"\" class=\"wp-image-12\"/></figure>\n",
"attributes": {
"sizeSlug": "full",
"width": null,
"height": null
}
},
If you manually change the width for example it will store it in the width
attribute:
{
"apiVersion": 2,
"name": "core/image",
"renderedHtml": "\n<figure class=\"wp-block-image size-full is-resized\"><img src=\"http://mysite.local/wp-content/uploads/2023/03/3F3F3F3F3F3F_3F3F3F3F3F3F3F-1.webp\" alt=\"\" class=\"wp-image-12\" width=\"620\"/></figure>\n",
"attributes": {
"sizeSlug": "full",
"width": "620",
"height": null
}
},
We recognise that this won't be ideal in your case. However we do have a ticket in our backlog to expose the mediaDetails
of the particular image resource from the database. This way you will have access to the full size details of the image.
{
"apiVersion": 2,
"name": "core/image",
"renderedHtml": "\n<figure class=\"wp-block-image size-full is-resized\"><img src=\"http://mysite.local/wp-content/uploads/2023/03/3F3F3F3F3F3F_3F3F3F3F3F3F3F-1.webp\" alt=\"\" class=\"wp-image-12\" width=\"620\"/></figure>\n",
"attributes": {
"sizeSlug": "full",
"width": "620",
"height": null
}
mediaItem: {
"id":"cG9zdDoxMg==",
"databaseId":12,
"mediaDetails": {
"file": "woocommerce-placeholder.png",
"height": 1200,
"width": 1200,
"sizes": [
{
"sizeSlug": "full",
"file": "woocommerce-placeholder-1024x1024.png",
"fileSize": 98202,
"height": "1024",
"mimeType": "image/png",
"name": "large",
"sourceUrl": "http://mysite.local/wp-content/uploads/woocommerce-placeholder-1024x1024.png",
"width": "1024"
}
]
}
},
}
from wp-graphql-content-blocks.
This is the default behavior. The block editor uses the media details slugs for the default image sizes like medium,large or full. If you override any of the width or height it will store it as a custom style.[....]. However we do have a ticket in our backlog to expose the mediaDetails of the particular image resource from the database. This way you will have access to the full size details of the image.
I love the additive approach of exposing a MediaItem connection as a workaround.
Would it also make sense to populate a null width
and height
on the Model
? Getting the dimensions of a size slug on the server is a lot more performant than a db query , and would make it easier to design frontend components (e.g. using next/image with a fixed size) without needing to fall back from sizesSlug
=> width
=> mediaItem?.mediaDetails?.sizes( $sizeInput* )?.width
.
This "default behavior" feels like a DX bug in Gutenberg, due to common REST endpoint patterns, so it might be worth diverging in this particular case.
(* Not sure offhand if an a secondary connection input can get set server-side, if not the frontend would have the extra step of filtering the sizes
array by the sizeSlug
).
from wp-graphql-content-blocks.
Sure we could also explore that option but we will have to make sure that we do not mess up with custom width or height.
from wp-graphql-content-blocks.
@johnboylesingfield we added the mediaDetails field in CoreImage block. It will be available in the next release version.
from wp-graphql-content-blocks.
I will post any updates here when this is supported.
from wp-graphql-content-blocks.
Thank you!
from wp-graphql-content-blocks.
Related Issues (20)
- CorePostTerms doesn't expose any way to ask for the terms HOT 9
- Content Blocks: Add configuration for running tests locally HOT 1
- Reusable block isn't resolved inside columns HOT 3
- CoreImage give wrong caption when lightbox is enable HOT 2
- Feature: Add support for Xpath selectors HOT 1
- Can't retrieve Core Navigation data HOT 1
- Upload Schema Artifact workflow fails to upload schema HOT 1
- CircleCI deploy fails due to restricted context
- Switch to new PHPCSStandards/PHP_CodeSniffer package HOT 1
- Submit plugin to WordPress.org
- Failure running getIntrospectionQuery - GraphiQL IDE Schema not loading HOT 3
- When activation plugin, got Fatal error: Uncaught Error: Class "EnforceSemVer\EnforceSemVer" not found
- Support nested properties inside block.json attributes
- Missing fields in GraphQL query HOT 6
- Add WordPress "nightly" support to testing matrix
- CoreImage / CoreGallery how get MediaItem data?
- Critical error when installing plugin HOT 4
- ApolloError: Internal server error when querying "dropCap" attribute on core/paragraph block HOT 8
- CoreTable column alignment returns null HOT 1
- Interface field argument error in GraphQL IDE after update to WPGraphQL 1.26
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wp-graphql-content-blocks.