Skip to content
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

[gatsby-source-wordpress] Treat wp settings as a known type for inclusion #5708

Merged

Conversation

Projects
None yet
3 participants
@Adam-Mould
Copy link
Contributor

commented Jun 4, 2018

Signed-off-by: Adam Mould adamwmould@gmail.com

Append wordpress_id to wp settings to prevent exclusion
Signed-off-by: Adam Mould <adamwmould@gmail.com>
@Adam-Mould

This comment has been minimized.

Copy link
Contributor Author

commented Jun 4, 2018

Hey guys,

An initial go at including WP Settings fields as GraphQL types using the gatsby-source-wordpress plugin.

It feels more of a workaround, and I'm open to other suggestions on better ways of approaching this, I just wanted to get some working code into review 👍

@gatsbybot

This comment has been minimized.

Copy link

commented Jun 4, 2018

Deploy preview for using-drupal ready!

Built with commit c7b876b

https://deploy-preview-5708--using-drupal.netlify.com

@pieh

This comment has been minimized.

Copy link
Contributor

commented Jun 4, 2018

Alternative solution would be to to treat settings entity as known? so change https://github.com/Adam-Mould/gatsby/blob/66049b91490441145e4a4c4aad7d16f79a390e6b/packages/gatsby-source-wordpress/src/normalize.js#L152 to not filter it out?

@gatsbybot

This comment has been minimized.

Copy link

commented Jun 4, 2018

Deploy preview for gatsbygram ready!

Built with commit c7b876b

https://deploy-preview-5708--gatsbygram.netlify.com

@Adam-Mould

This comment has been minimized.

Copy link
Contributor Author

commented Jun 4, 2018

Hey @pieh, that was my first thought as well, but unfortunately when createGatsbyIds runs it tries to set the entity ID by using the wordpress_id - https://github.com/Adam-Mould/gatsby/blob/66049b91490441145e4a4c4aad7d16f79a390e6b/packages/gatsby-source-wordpress/src/normalize.js#L154

It was then throwing the error - TypeError: Cannot read property 'toString' of undefined

@pieh

This comment has been minimized.

Copy link
Contributor

commented Jun 4, 2018

Is this the only place that cause errors? Given that we are already filtering out unknown entities we could change node id generation to not use wordpress_id if it doesn't exists?

Treat wp settings as a known type
Signed-off-by: Adam Mould <adamwmould@gmail.com>
@Adam-Mould

This comment has been minimized.

Copy link
Contributor Author

commented Jun 4, 2018

I've just push a commit with that solution in place. Feels much nicer to me.

Can you take a look at let me know your thoughts please?

@Adam-Mould Adam-Mould changed the title Append wordpress_id to wp settings to prevent exclusion [gatsby-source-wordpress] Treat wp settings as a known type for inclusion Jun 4, 2018

@@ -138,11 +138,15 @@ exports.liftRenderedField = entities =>

// Exclude entities of unknown shape

This comment has been minimized.

Copy link
@pieh

pieh Jun 5, 2018

Contributor

Can you add some context to function description comment so it's easier for future contributors? That we assume that all entities need ids except for whitelisted types (currently just settings)


exports.createGatsbyIds = (createNodeId, entities) =>
entities.map(e => {
e.id = createNodeId(`${e.__type}-${e.wordpress_id.toString()}`)
if (e.wordpress_id) {

This comment has been minimized.

Copy link
@pieh

pieh Jun 5, 2018

Contributor

here would be good idea to put comment mentioning excludeUnknownEntities and why we have to ways of creating node id

@pieh
Copy link
Contributor

left a comment

Code wise, it's good - just some code comments fine tuning and this will be ready to go in!

@Adam-Mould

This comment has been minimized.

Copy link
Contributor Author

commented Jun 5, 2018

Awesome, I'll get these code comments added this evening :)

Comments to explain normalize functions
Signed-off-by: Adam Mould <adamwmould@gmail.com>
@pieh

pieh approved these changes Jun 5, 2018

@pieh pieh merged commit 050b6ef into gatsbyjs:master Jun 5, 2018

2 of 3 checks passed

continuous-integration/appveyor/pr AppVeyor build failed
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
deploy/netlify Deploy preview ready!
Details
@pieh

This comment has been minimized.

Copy link
Contributor

commented Jun 5, 2018

Thanks!

m-allanson added a commit that referenced this pull request Jun 11, 2018

Merge branch 'master' into v2
* master: (219 commits)
  Revert "Add rawMarkdownBody to node.internal" (#5769)
  Publish
  Change code highlights to the correct lines (#5765)
  Update sitemap example to include posts and exclude sample page (#5723)
  [gatsby-transformer-remark] add rawMarkdownBody  (#5557)
  [gatsby-image] add placeholderStyle prop (#5745)
  [gatsby-plugin-sharp] toFormat fix and unify defaultArgs handling (#5071)
  [gatsby-source-wordpress] Do not assume entities will exist (#5004)
  [gatsby-transformer-excel] add option to disable raw output (#5746)
  Update gatsby-config.js (#5744)
  Publish
  [gatsby-source-mongodb] Use Promises to prevent calling done too early (#5738)
  clues about this being advanced
  [gatsby-source-wordpress] Treat wp settings as a known type for inclusion (#5708)
  [www] Add dot com to main navigation (#5579)
  Publish
  fixed TOC links, shortened TOC, localhost edits
  Introduction to Gatsby blog post (#5628)
  Update gatsby-config.js (#5688)
  Add envinfo to gatsby-cli, issue template (#5594)
  ...

# Conflicts:
#	.github/ISSUE_TEMPLATE/bug_report.md
#	.github/ISSUE_TEMPLATE/question.md
#	README.md
#	docs/blog/author.yaml
#	docs/docs/adding-search.md
#	docs/docs/gatsby-starters.md
#	docs/docs/how-to-contribute.md
#	docs/docs/image-tutorial.md
#	docs/docs/source-plugin-tutorial.md
#	docs/docs/wordpress-source-plugin-tutorial.md
#	docs/docs/working-with-images.md
#	docs/tutorial/part-two/index.md
#	examples/image-processing/src/pages/index.js
#	examples/sitemap/gatsby-node.js
#	examples/sitemap/src/pages/index.js
#	examples/sitemap/src/pages/page-2.js
#	examples/sitemap/src/pages/secret.js
#	examples/using-asciidoc/.eslintrc
#	examples/using-contentful/.eslintrc
#	examples/using-contentful/.eslintrc.json
#	examples/using-css-modules/.eslintrc
#	examples/using-css-modules/.eslintrc.json
#	examples/using-csv/.eslintrc
#	examples/using-csv/.eslintrc.json
#	examples/using-drupal/.eslintrc
#	examples/using-drupal/.eslintrc.json
#	examples/using-emotion/.eslintrc
#	examples/using-emotion/.eslintrc.json
#	examples/using-excel/.eslintrc
#	examples/using-excel/.eslintrc.json
#	examples/using-gatsby-image/.eslintrc
#	examples/using-gatsby-image/.eslintrc.json
#	examples/using-glamor/.eslintrc
#	examples/using-glamor/.eslintrc.json
#	examples/using-hjson/.eslintrc
#	examples/using-hjson/.eslintrc.json
#	examples/using-mongodb/.eslintrc
#	examples/using-mongodb/.eslintrc.json
#	examples/using-page-loading-indicator/.eslintrc
#	examples/using-page-loading-indicator/.eslintrc.json
#	examples/using-path-prefix/.eslintrc
#	examples/using-path-prefix/.eslintrc.json
#	examples/using-react-native-web/.eslintrc
#	examples/using-react-native-web/.eslintrc.json
#	examples/using-react-url-query/.eslintrc
#	examples/using-react-url-query/.eslintrc.json
#	examples/using-redirects/.eslintrc
#	examples/using-redirects/.eslintrc.json
#	examples/using-remark-copy-linked-files/.eslintrc
#	examples/using-remark-copy-linked-files/.eslintrc.json
#	examples/using-sqip/src/components/polaroid.js
#	examples/using-sqip/src/layouts/index.js
#	examples/using-styled-components/.eslintrc
#	examples/using-styled-components/.eslintrc.json
#	examples/using-styled-jsx/.eslintrc
#	examples/using-styled-jsx/.eslintrc.json
#	examples/using-styletron/.eslintrc
#	examples/using-styletron/.eslintrc.json
#	examples/using-wordpress/gatsby-node.js
#	packages/gatsby-cli/package.json
#	packages/gatsby-image/package.json
#	packages/gatsby-image/src/index.js
#	packages/gatsby-link/package.json
#	packages/gatsby-plugin-catch-links/package.json
#	packages/gatsby-plugin-emotion/README.md
#	packages/gatsby-plugin-emotion/package.json
#	packages/gatsby-plugin-emotion/src/gatsby-node.js
#	packages/gatsby-plugin-feed/package.json
#	packages/gatsby-plugin-google-tagmanager/package.json
#	packages/gatsby-plugin-manifest/package.json
#	packages/gatsby-plugin-netlify/package.json
#	packages/gatsby-plugin-offline/package.json
#	packages/gatsby-plugin-postcss-sass/package.json
#	packages/gatsby-plugin-postcss-sass/src/__tests__/gatsby-node.js
#	packages/gatsby-plugin-postcss-sass/src/gatsby-node.js
#	packages/gatsby-plugin-sharp/package.json
#	packages/gatsby-plugin-sharp/src/index.js
#	packages/gatsby-plugin-sitemap/package.json
#	packages/gatsby-plugin-styletron/package.json
#	packages/gatsby-plugin-stylus/package.json
#	packages/gatsby-plugin-stylus/src/__tests__/gatsby-node.js
#	packages/gatsby-react-router-scroll/package.json
#	packages/gatsby-remark-autolink-headers/package.json
#	packages/gatsby-remark-copy-linked-files/package.json
#	packages/gatsby-remark-embed-snippet/package.json
#	packages/gatsby-remark-images/package.json
#	packages/gatsby-remark-katex/package.json
#	packages/gatsby-remark-prismjs/package.json
#	packages/gatsby-remark-responsive-iframe/package.json
#	packages/gatsby-source-contentful/package.json
#	packages/gatsby-source-contentful/src/gatsby-node.js
#	packages/gatsby-source-contentful/src/normalize.js
#	packages/gatsby-source-drupal/package.json
#	packages/gatsby-source-faker/package.json
#	packages/gatsby-source-filesystem/package.json
#	packages/gatsby-source-mongodb/package.json
#	packages/gatsby-source-mongodb/src/gatsby-node.js
#	packages/gatsby-source-wordpress/package.json
#	packages/gatsby-transformer-excel/package.json
#	packages/gatsby-transformer-json/README.md
#	packages/gatsby-transformer-json/package.json
#	packages/gatsby-transformer-remark/package.json
#	packages/gatsby-transformer-screenshot/package.json
#	packages/gatsby-transformer-sharp/package.json
#	packages/gatsby-transformer-sharp/src/extend-node-type.js
#	packages/gatsby-transformer-sharp/src/types.js
#	packages/gatsby-transformer-sqip/.babelrc
#	packages/gatsby-transformer-sqip/package.json
#	packages/gatsby-transformer-sqip/src/extend-node-type.js
#	packages/gatsby-transformer-yaml/package.json
#	packages/gatsby/cache-dir/static-entry.js
#	packages/gatsby/package.json
#	packages/gatsby/src/cache-dir/app.js
#	packages/gatsby/src/cache-dir/production-app.js
#	packages/gatsby/src/internal-plugins/query-runner/query-runner.js
#	packages/gatsby/src/schema/__tests__/data-tree-utils-test.js
#	packages/gatsby/src/schema/type-conflict-reporter.js
#	packages/gatsby/src/utils/api-browser-docs.js
#	packages/gatsby/src/utils/api-node-docs.js
#	packages/gatsby/src/utils/webpack.config.js
#	www/gatsby-config.js
#	www/package.json
#	www/src/components/masthead.js
#	www/src/data/sidebars/doc-links.yaml
#	www/src/data/sites.yml
#	www/src/layouts/index.js
#	www/src/pages/blog/index.js
#	www/src/pages/plugins.js
#	yarn.lock

@Adam-Mould Adam-Mould deleted the Adam-Mould:topics/gatsby-source-wordpress-wp-settings branch Dec 14, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.