docker-compose up -dto install wordpresssudo docker exec -it gatsby_wordpress /bin/bashto access to the wordpress source files on "/var/www/html"chmod a+rw /var/www/html/wp-content/themes /var/www/html/wp-content/pluginsto temporarily allow full permissions(rwx) for the folderthemesfolder andplugins- Access to the WordPress Dashboard from http://localhost:8000 and install these plugins:
- ACF Pro or ACF to add custom fields to posts and pages.
- ACF to REST API to expose Advanced Custom Fields endpoints in the Wordpress REST API
- WPML Multilingual CMS multilingual Plugin (not FREE)
- Install WPML-REST-API which adds the current locale and available translations to all post types translated with WPML.
- Install JSON Viewer chrome extension for formating and highlighting the preview of JSON files.
- Install gatsby-cli if it's not installed in your Machine
- Start
gatby new gatsby-wordpressto create a new gatsby project. - From the
gatsby-wordpressfolder run the commandgatsby develop --host=0.0.0.0 --port=8888this command include different port8888, because we already set up wordpress to use the8000. - Access to the Gatsby website from http://localhost:8888
- Install Gatsby Source wordpress
npm install --save gatsby-source-wordpress - Update
gatsby-config.jswith the newgatsby-source-wordpressConfig - Change
baseUrl: gatsbyjsexamplewordpress.wordpress.comtobaseUrl: localhost:8000to connect Gatsby to the WordPress Blog. - Stop
gatsby developif it's already running, and rungatsby develop --host=0.0.0.0 --port=8888again to fetch all the posts, pages, media, acf fields... - If as an example you want to access to the endopoints of the list of the posts, follow this URL http://localhost:8000/wp-json/wp/v2/posts
- Install FakerPress Plugin to generate some dummy Content.
- Get to the FakerPress from the WordPress Admin Dashboard, click on Posts and generate 10 posts, or any other number you want.
- Rerun again
gatsby develop --host=0.0.0.0 --port=8888to rebuild everything, because you add some new posts - View GraphiQL, which it's an in-browser IDE, to explore the site Data.
- Add this query on GraphiQL to access to the posts list:
{ allWordpressPost { edges { node { id title } } } }
- Pages and Posts will be created automatically after each build.
- The file responsible for generating posts and pages is
gatsby-node.js - The generated Posts and Pages has templates
src/templates/post.jsandsrc/templates/page.js
-
Add a Gallery Custom Field
-
Set the field to be shown on Pages not Posts
-
Add some image to the Gallery from any page
-
Rerun the command
gatsby develop --host=0.0.0.0 --port=8888 -
This is an example of the query responsible for getting the custom field from the ACF plugin, plus defined how the image should be rendered:
query($id: String!) { wordpressPage(id: { eq: $id }) { title content acf { gt_gallery { id localFile { childImageSharp { fixed(width: 400) { # Choose either the fragment including a small base64ed image, a traced placeholder SVG, or one without. ...GatsbyImageSharpFixed } } } } } } }