Skip to main content
Community Plugin
View plugin on GitHub
See starters using this

Gatsby Theme

gatsby-theme-wordpress-mdx

@artezan/gatsby-theme-wordpress-mdx is released under the MIT license. Current npm package version. Downloads per month on npm. Total downloads on npm. PRs welcome! Follow @CArtezan

This Plugin is a union of two worlds 🌓 the old WordPress and the new MDX. You can use WP, MDX or both

Demo

Features

  • Theme UI-based theming
  • react-animated-css
  • MDX source
  • WP source

Only 3 Steps 🤯

1.- Installation ⛏

npm install gatsby-theme-wordpress-mdx

2.- Configuration ⚙

// gatsby-config.js
siteMetadata: {
    title: 'MDX WP',
    description: 'It is a WP with MDX blog ',
    keywords: ['GatsbyJs', 'React', 'theme-ui'],
    siteURL: 'https://artezan-blog.netlify.com', // No trailing slash allowed!
    siteImage: '/preview.png', // Path to your image you placed in the 'static' folder
    twitterUsername: '@CArtezan',
    author: {
      name: 'Cesar Artezan'
    }
  },
  plugins: [
    resolve: 'gatsby-theme-wordpress-mdx',
    options:
     {
    // Requiered
    sourceWordpress: {
      sourcePost: true, // if true install gatsby-source-wordpress
      sourcePage: true, // if true install gatsby-source-wordpress
    },
    // Requiered
    sourceMdxPosts: true, // if true create `src/posts`
    logo: `src/images/logo.svg` // This path is relative to the root of the site.
     }
  ]

3.- Folder Structure 📁

  • src/index.mdx is required, in this file you can generate the landing page
  • src/page is required, it is without “s” because mdx plugin
  • src/sections is required but it could be empty, this folder is for the sections imported in index.mdx
Root
│   README.md
│   gatsby-config.js
└───src
│   └───gatsby-plugin-theme-ui
│   │   │ index.js
│   └───posts
│   │   │ mdx files
│   └───page
│   │   │ mdx files
│   └───sections
│   │   │ mdx files
│   └───images
│   │   │ png jpg svg files
│   │   │ logo.svg
│   │ index.mdx
│
└───static
    │   file021.png
    │   favicon.ico

And that’s it, now you can start code in index.mdx your landing page and the others page in src/page 👨‍💻

Advance options

Theme options ⚙️

Keys Child Keys Type Required Description
sourceWordpress Obj True ✅ Turn on/off the source of page or post of WP
sourcePost Boolean False true if you want to use wp post source, requires gatsby-source-wordpress
sourcePage False true if you, want to use wp page source, requires gatsby-source-wordpress
sourceMdxPosts Boolean True ✅ true if you, want to use mdx post source
headerHeight Number False px of the header bar, default 64 px
sideBarWidth Number False px of the side bar, default 240 px
navButtonTheme Obj Flase This key is for the btn that change the colors modes of the themes Color modes
showButtonTheme Boolean False Show the btn
text String False Text inside the btn, otherwise it will show the name of the theme
colorsModes String[ ] False This Array contains the posible themes, otherwise it will show all the themes
colorModes Obj False Use this obj if you want to set as default a specific theme
default String False Name of the theme
logo String False This path is relative to the root of the site. And show the logo in the header bar

Example usage 🔎

// gatsby-config.js

resolve: 'gatsby-theme-wordpress-mdx',
options:
{
    // Requiered
    sourceWordpress: {
      sourcePost: true,
      sourcePage: true,
    },
    // Requiered
    sourceMdxPosts: true,
    // config optional
    headerHeight: 64,
    sideBarWidth: 240,
    navButtonTheme: {
      showButtonTheme: true
      text: 'Change',
      colorsModes: ['deep', 'purple']
    },
    colorModes: {
      default: 'gray'
    },
    logo: `src/images/logo.svg` // This path is relative to the root of the site.
  }

Additional configuration ⚙️

In addition to the theme options, there are a handful of items you can customize via the siteMetadata object in your site’s gatsby-config.js

// gatsby-config.js
module.exports = {
  siteMetadata: {
    title: 'MDX WP',
    description: 'It is a WP with MDX blog ',
    keywords: ['GatsbyJs', 'React', 'theme-ui'],
    siteURL: 'http://artezan-blog.netlify.com',
    // Used for og:image and must be placed inside the `static` folder
    siteImage: '/preview.png'
  }
}

For preview img see developer twitter

Extending Themes and Colors 🦄

Please read the guide Shadowing in Gatsby Themes and Extending a theme to understand how to customize the this theme! Generally speaking you will want to place your files into src/@artezan/gatsby-theme-wordpress-mdx/ to shadow/override files. The Theme UI config can be configured by shadowing its files in src/gatsby-plugin-theme-ui/.

Colors Helpers

In src/gatsby-plugin-theme-ui/index.js this is the basic colors keys

colors: {
    // Color of headers
    text: '#ffffff',
    // Color of <p>
    textSecondary: '#ccd0d6',
    // color of hover button and placeholder
    textMuted: '#667284',
    primary: '#04d0d9',
    secondary: '#FBF8EF',
    muted: '#262c35',
    background: '#353e4a',
    transparent: `rgba(0,0,0,0)`,
    imgShadow: '11px 7px 20px 12px rgb(0, 0, 0)',
    shadowCard: '',
    backgroundNavBar: '#353e4a',
    backgroundSideBar: '#353e4a',
    activeTextBar: '#FBF8EF',
    textBar: '#04d0d9',
    backgroundCard: '#262c35',
    borderRadiusCard: 1,

}

For advance options

colors: {
   text: '#ffffff',
    textSecondary: '#ccd0d6',
    textMuted: '#667284',
    primary: '#04d0d9',
    secondary: '#FBF8EF',
    muted: '#262c35',
    background: '#353e4a',
    // box-shadow for imgon landing
    imgShadow: '11px 7px 20px 12px rgb(0, 0, 0)',
    // box-shadow for all the cards
    shadowCard: '',
    // background-color for the navbar
    backgroundNavBar: 'background',
    //background-color for side bar
    backgroundSideBar: 'background',
    // color for active item
    activeTextBar: 'secondary',
    // color for items on side and header bar
    textBar: 'primary',
    // border for cards
    borderRadiusCard: 1,
    // background-color for cards
    backgroundCard: 'muted',
    // :hover for cards
    hoverCard: {
      filter: 'brightness(105%)'
    },
    // :focus for Link
    onClickLink: {},
    // :focus for cards
    onClickCard: { filter: 'brightness(105%)' }
    }

Editing the content 🗒️

In src/index.mdx must have at least:

---
title: index
layout: landing
---

Your landing page here

Not matter what kind of file, you can add a Fluid IMG in the front matter like this:

---
nameImage: about-image1.jpg
---

## Title

And then acces to the imagen with props.imagesFluid['about-image1.jpg']

or

---
nameImage: [about-image1.jpg, about-image2.jpg]
---

## Title

And then acces to the imagen with props.imagesFluid['about-image2.jpg'] props.imagesFluid['about-image1.jpg']

General Variable

Inside src/index.mdx you can access to this variable:

  • props.imagesFluid Array of IMG in the front matter imagesFluid[nameImg.png]
  • props.context Contex of Theme ui see context
  • props.colorMode Color Mode
  • props.setColorMode Set Color
  • props.allMdxWpPosts Array of all post
  • props.allMdxWpPages Array of all Pages

Short Codes

  • All the short codes have the sx prop for styles see sx-prop
Code props description
<AboutLayout /> Layout for about section
sx style
aboutImageFluid Fluid Img
<AllPosts /> Returns a list of cards with all posts
numOfPosts number of the post to show
showSearchBar Show a search bar that filter by tags
<BgImage /> For more info see (gatsby-background-image)[https://www.gatsbyjs.org/packages/gatsby-background-image/]
` | | Change the colors modes
themes Array of the posible themes, if it dont set returns all the themes
Children Text of the btn, otherwise the txt of the btn will be the name of the theme
<ContainerWrapper /> Container with max-width
FeaturesWrapper Flex container for features
<FeatureLayout /> Layout for feature sections, this will show a img on the top and text on the bottom
featureImageFluid Fluid img for feature
<ImgGatsby /> Short code for gatsby-image
<Div /> div tag with sx props
<SocialLink /> Generate a btn icon that redirect to a social link (facebook, twitter, etc)